Fehlermeldung

Warning: JavaScript 1.6's for-each-in loops are deprecated; consider using ES6 for-of instead

Fehlertyp

Warnung

Was ist falsch gelaufen?

Das for each (variable in obj) Statement aus JavaScript 1.6 ist veraltet und wird in naher Zukunft entfernt.

Beispiele

Objektiteration

for each...in wurde eingesetzt, um über spezifizierte Objektwerte zu iterieren.

Veraltete Syntax

var object = { a: 10, b: 20 };

for each (var x in object) {
  console.log(x);        // 10
                         // 20
}

Alternative Standardsyntax

Man kann die Standardschleife for...in benutzen, um über spezifizierte Objektschlüssel zu iterieren und jeden Wert in der Schleife auszulesen:

var object = { a: 10, b: 20 };

for (var key in object) {
  var x = object[key];
  console.log(x);        // 10
                         // 20
}

Oder man benutzt for...of (ES2015) und Object.values (ES2017), um ein Array von spezifizerten Werten zu bekommen und über diese zu iterieren:

var object = { a: 10, b: 20 };

for (var x of Object.values(object)) {
  console.log(x);        // 10
                         // 20
}

Arrayiteration

for each...in wurde eingesetzt, um über spezifizierte Arrayelemente zu iterieren.

Veraltete Syntax

var array = [10, 20, 30];

for each (var x in array) {
  console.log(x);        // 10
                         // 20
                         // 30
}

Alternative Standardsyntax

Dieses ist mit der for...of Schleife (ES2015) möglich.

var array = [10, 20, 30];

for (var x of array) {
  console.log(x);        // 10
                         // 20
                         // 30
}

Iterieren über ein Arrays oder null

for each...in tut nichts, wenn der übergebene Wert null oder undefined ist. for...of erzeugt in diesem Fall einen Fehler.

Veraltete Syntax

function func(array) {
  for each (var x in array) {
    console.log(x);
  }
}
func([10, 20]);        // 10
                       // 20
func(null);            // prints nothing
func(undefined);       // prints nothing

Alternative Standardsyntax

Um das for each...in Statement neu zu schreibe, so dass null oder undefined mit for...of funktionieren, muss eine Bedingung um for...of verfasst werden.

function func(array) {
  if (array) {
    for (var x of array) {
      console.log(x);
    }
  }
}
func([10, 20]);        // 10
                       // 20
func(null);            // prints nothing
func(undefined);       // prints nothing

Über Objekt-Schlüssel-Werte-Paare iterieren

Veraltete Syntax

Es gibt eine veraltete Dialekt, der das Iterieren über Objekt-Schlüssel-Werte-Paare mit for each...in und mit dem veralteten Iterator Objekt erlaubt.

var object = { a: 10, b: 20 };

for each (var [key, value] in Iterator(object)) {
  console.log(key, value);  // "a", 10
                            // "b", 20
}

Alternative Standardsyntax

Man kann die Standardschleife for...in benutzen, um über spezifizierte Objektschlüssel zu iterieren und jeden Wert in der Schleife auszulesen:

var object = { a: 10, b: 20 };

for (var key in object) {
  var value = object[key];
  console.log(key, value);  // "a", 10
                            // "b", 20
}

Oder man benutzt for...of (ES2015) und Object.values (ES2017), um ein Array von spezifizerten Werten zu bekommen und über diese zu iterieren:

var object = { a: 10, b: 20 };

for (var [key, value] of Object.entries(object)) {
  console.log(key, value);  // "a", 10
                            // "b", 20
}

Siehe auch

Schlagwörter des Dokuments und Mitwirkende

Schlagwörter: 
Mitwirkende an dieser Seite: schlagi123
Zuletzt aktualisiert von: schlagi123,