SyntaxError: for-in loop head declarations may not have initializers

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"

Siehe auch

  • for...in
  • for...of – ebenfalls keine Initialisierung erlaubt (im Strict und normalen Mode).
  • for – Präferiert für das Iterieren über ein Array. Erlaubt das Initialisieren.

Schlagwörter des Dokuments und Mitwirkende

Mitwirkende an dieser Seite: schlagi123
Zuletzt aktualisiert von: schlagi123,