--- title: 'SyntaxError: for-in loop head declarations may not have initializers' slug: Web/JavaScript/Reference/Errors/Invalid_for-in_initializer tags: - Error - JavaScript - Strict Mode - SyntaxError translation_of: Web/JavaScript/Reference/Errors/Invalid_for-in_initializer original_slug: Web/JavaScript/Reference/Fehler/Invalid_for-in_initializer ---
SyntaxError: for-in loop head declarations may not have initializers (Firefox) SyntaxError: for-in loop variable declaration may not have an initializer. (Chrome)
{{jsxref("SyntaxError")}} nur im Strict Mode.
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.
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
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]);
}
Die for...in Schleife sollte nicht für Array Iterationen benutzt werden. Zum Iterieren von durch ein {{jsxref("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"