Thanks to visit codestin.com
Credit goes to developer.mozilla.org

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

SyntaxError: for-in Schleifenkopf-Deklarationen dürfen keine Initialisierer haben

Die JavaScript-Strict-Mode-ausschließliche Ausnahme "for-in Schleifenkopf-Deklarationen dürfen keine Initialisierer haben" tritt auf, wenn der Kopf einer for...in Schleife einen Initialisierungsausdruck enthält, wie zum Beispiel for (var i = 0 in obj). Dies ist in for-in Schleifen im Strict-Mode nicht erlaubt. Darüber hinaus sind lexikalische Deklarationen mit Initialisierern wie for (const i = 0 in obj) auch außerhalb des Strict-Modes nicht erlaubt.

Meldung

SyntaxError: for-in loop variable declaration may not have an initializer. (V8-based)
SyntaxError: for-in loop head declarations may not have initializers (Firefox)
SyntaxError: a lexical declaration in the head of a for-in loop can't have an initializer (Firefox)
SyntaxError: Cannot assign to the loop variable inside a for-in loop header. (Safari)

Fehlertyp

SyntaxError.

Was ist schief gelaufen?

Der Kopf einer for...in Schleife enthält einen Initialisierungsausdruck. Das heißt, eine Variable wird deklariert und ein Wert zugewiesen for (var i = 0 in obj). Im Nicht-Strict-Mode wird diese Kopf-Deklaration stillschweigend ignoriert und verhält sich wie for (var i in obj). Im Strict-Mode wird jedoch ein SyntaxError ausgelöst. Darüber hinaus sind lexikalische Deklarationen mit Initialisierern wie for (const i = 0 in obj) auch außerhalb des Strict-Modes nicht erlaubt und führen immer zu einem SyntaxError.

Beispiele

Dieses Beispiel löst einen SyntaxError aus:

js
const obj = { a: 1, b: 2, c: 3 };

for (const i = 0 in obj) {
  console.log(obj[i]);
}

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

Gültige for-in Schleife

Sie können den Initialisierer (i = 0) im Kopf der for-in Schleife entfernen.

js
const obj = { a: 1, b: 2, c: 3 };

for (const i in obj) {
  console.log(obj[i]);
}

Array-Iteration

Die for...in Schleife sollte nicht für die Array-Iteration verwendet werden. Haben Sie vor, eine for Schleife anstelle einer for-in Schleife zu verwenden, um ein Array zu iterieren? Die for Schleife erlaubt es Ihnen, dann auch einen Initialisierer festzulegen:

js
const arr = ["a", "b", "c"];

for (let i = 2; i < arr.length; i++) {
  console.log(arr[i]);
}

// "c"

Siehe auch