Fehlermeldung
SyntaxError: for-in loop head declarations may not have initializers (Firefox) SyntaxError: for-in loop variable declaration may not have an initializer. (Chrome)
Fehlertyp
SyntaxError
nur im Strict Mode.
Was ist falsch gelaufen?
Der Kopf einer for...in Schleife enthält einen Initialisierungsausdruck. Das ist, wenn eine Variable deklariert und mit einem Wert initialisiert wird (for(var i = 0 in obj)
). Ohne Strict Mode wird die Initialisierung still ignoriert und verhält sich wie for(var i in obj)
. Im Strict Mode wird ein SyntaxError
erzeugt.
Beispiele
Das Beispiel erzeugt einen SyntaxError
:
"use strict";
var obj = {a: 1, b: 2, c: 3 };
for (var i = 0 in obj) {
console.log(obj[i]);
}
// SyntaxError: for-in loop head declarations may not have initializers
Valide for-in Schleife
Man kann die Initialisierung (i = 0
) im Kopf der for-in Schleife entfernen.
"use strict";
var obj = {a: 1, b: 2, c: 3 };
for (var i in obj) {
console.log(obj[i]);
}
Array Iteration
Die for...in Schleife sollte nicht für Array Iterationen benutzt werden. Zum Iterieren von durch ein Array
sollte eine for
Schleife statt einer for-in
Schleife benutzt werden. Die for
Schleife erlaubt es dann auch eine Initialisierung vorzunehmen:
var arr = [ "a", "b", "c" ]
for (var i = 2; i < arr.length; i++) {
console.log(arr[i]);
}
// "c"