Desde for
MDN
for ([initialization]; [condition]; [final-expression])
statement
[Initialization]
y [final-expression]
ne sont intuitivement pas nécessaires, ce qui réduit la construction à une simple while
boucle. Mais la partie pertinente est :
condition
Une expression à évaluer avant chaque itération de la boucle. Si cette expression est évaluée à true, l'instruction est exécutée. Ce test conditionnel est facultatif. S'il est omis, la condition est toujours évaluée à true. Si l'expression est fausse, l'exécution passe à la première expression suivant la construction for.
(c'est moi qui souligne)
Cela semble être une décision de conception du langage JS totalement arbitraire. Si c'était mon langage, je ferais probablement une erreur de syntaxe.
Sur une note latérale amusante, for(;;){}
est équivalent à while(true){}
et se trouve être plus court de 4 caractères. Je me demande si les mineurs exploitent cela !