2012-04-24 14 views

Respuesta

13

El bucle simplemente repetir tanto tiempo como i es menor que length. Simplemente supone que i ya está declarado en otro lugar.

En realidad, todas las piezas dentro de una construcción de lazo for son opcionales. Por ejemplo, esta es una forma perfectamente válida para crear un bucle sin fin:

​for(;;) window.alert('Are you sick of alerts yet?');​​​​​​​​​ 
+0

+1 for 'for (;;)', que trae recuerdos de antes de que me diera cuenta de que 'while (true)' era más legible (por alguna razón, me presentaron 'for (;;)' como el canónico forma de crear un bucle infinito) ... – Cameron

+0

Sí, JavaScript es un lenguaje único en el sentido de que este tipo de atajos hacky-ish son un tanto * estimulados * solo para ahorrar bytes a través del cable. De lo contrario, 'while (true)' es más fácil de leer. Casting con '!!' o '~~' también es divertido .. –

+0

¡Ja, pero en realidad estaba aprendiendo C++ en ese momento (primer lenguaje de programación), no JavaScript! ;-) – Cameron

9

Es un bucle for regular que no hace nada en absoluto en la etapa de inicialización.

Esto es equivalente a la escritura:

; 
while (i < length) { 
    // ... 
    i++; 
} 

excepto si hay un continue en el cuerpo ..., en cuyo caso el bucle for ejecutaría la i++ antes de volver a evaluar la condición, y el bucle while no lo haría .

+0

¿Por qué uno preferiría escribir esto en un simple ciclo 'while'? –

+0

@ nl-x: Buen punto. Es más compacto, aunque un poco menos legible; sin embargo, si el * intento * es tener un bucle 'for 'normal, y sucede que no es necesario un paso de inicialización, entonces no veo nada de malo con el uso de ese formulario. La diferencia real surge si hay un 'continuar' dentro del cuerpo del bucle - la forma' for' se incrementa, pero la forma 'while' no. He editado mi respuesta para reflejar esto, gracias. – Cameron

+0

Lo siento, no estaba mirando claramente. Pensé que la parte 'i ++' también se había omitido, por ejemplo 'for (; i

Cuestiones relacionadas