--- 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"