De for
MDN
for ([initialization]; [condition]; [final-expression])
statement
[Initialization]
y [final-expression]
intuitivamente no son necesarios, lo que reduce el constructo a un simple bucle while
. Pero la parte pertinente es:
condición
Una expresión para ser evaluados antes de cada iteración del bucle. Si esta expresión se evalúa como verdadera, se ejecuta la instrucción. Esta prueba condicional es opcional. Si se omite, la condición siempre se evalúa como verdadera. Si la expresión se evalúa como falsa, la ejecución se salta a la primera expresión que sigue al constructo for.
(el énfasis es mío)
Ésta parece ser una decisión de diseño lenguaje totalmente arbitraria JS. Si fuera mi idioma, probablemente lanzaría un error de sintaxis.
En una nota lúdica, for(;;){}
es equivalente a while(true){}
, y pasa a ser 4 caracteres más corta. Me pregunto si los minificadores aprovechar esto!
Si no se proporciona ninguna condición, se ejecuta un bucle for hasta que salga de él. Es lo mismo en C. –
Ver http://stackoverflow.com/questions/4894120/special-for-loop-syntax/4894256#4894256 - exactamente lo mismo en Java y JavaScript que en C y C++. – paxdiablo