2011-03-13 9 views
5

me encontré con este código en el sitio de Mozilla y, mientras que a mí me parece rota, lo más probable es que no estoy familiarizado con su uso:¿Cómo funciona el punto y coma al comienzo de "para"?

for (; k < len; k++) 
    { 
     if (k in t && t[k] === searchElement) 
     return k; 
    } 

¿Cómo funciona el punto y coma al principio del bucle?

El código completo es here.

Respuesta

12

La primera parte es el inicial expresión que se utiliza para inicializar las variables (ver for construct):

for ([initial-expression]; [condition]; [final-expression]) 
    statement 

Los corchetes significan en este caso que es opcional . Por lo tanto, no necesita escribir ninguna expresión de inicializador si no tiene variables para inicializar. Como en este caso en k se inicializa antes del bucle for:

var k = n >= 0 
     ? n 
     : Math.max(len - Math.abs(n), 0); 

for (; k < len; k++) 
{ 
    if (k in t && t[k] === searchElement) 
    return k; 
} 

También podrían escribir como inicial expresión parte, pero que no habría que leer:

for (var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); k < len; k++) 
{ 
    if (k in t && t[k] === searchElement) 
    return k; 
} 
+1

Gracias, no me di cuenta las variables eran opcionales que tiene sentido ahora verlo de esta manera. – Stephen

1

Es media esa declaración e inicialización k variable es algo superior;

Si desea pasar por alto algunos para sección, que acaba de poner punto y coma, por ejemplo .:

for (;;) { 
    //infinite loop 
} 
+0

Infinito, no intrínseco –

+0

cierto - demasiado inglés gramma :) – smas

+0

@tomalak sí, enséñame mi maestro – smas

Cuestiones relacionadas