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

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.