Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
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 einerfor...in Schleifeeinen Initialisierungsausdruck enthält, wie zum Beispielfor (var i = 0 in obj). Dies ist in for-in Schleifen im Strict-Mode nichterlaubt. Darüber hinaus sind lexikalische Deklarationen mit Initialisierern wiefor (const i = 0 in obj) auch außerhalb des Strict-Modes nicht erlaubt.
In diesem Artikel
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
Was ist schief gelaufen?
Der Kopf einerfor...in Schleife enthält einen Initialisierungsausdruck.Das heißt, eine Variable wird deklariert und ein Wert zugewiesenfor (var i = 0 in obj).Im Nicht-Strict-Mode wird diese Kopf-Deklaration stillschweigend ignoriert und verhält sich wiefor (var i in obj).ImStrict-Mode wird jedoch einSyntaxError ausgelöst. Darüber hinaus sind lexikalische Deklarationen mit Initialisierern wiefor (const i = 0 in obj) auch außerhalb des Strict-Modes nicht erlaubt und führen immer zu einemSyntaxError.
Beispiele
Dieses Beispiel löst einenSyntaxError aus:
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 initializersGültige for-in Schleife
Sie können den Initialisierer (i = 0) im Kopf der for-in Schleife entfernen.
const obj = { a: 1, b: 2, c: 3 };for (const i in obj) { console.log(obj[i]);}Array-Iteration
Die for...in Schleifesollte nicht für die Array-Iteration verwendet werden.Haben Sie vor, einefor Schleife anstelle einerfor-in Schleife zu verwenden, um einArray zu iterieren? Diefor Schleife erlaubt es Ihnen, dann auch einen Initialisierer festzulegen:
const arr = ["a", "b", "c"];for (let i = 2; i < arr.length; i++) { console.log(arr[i]);}// "c"