Warning: JavaScript 1.6's for-each-in loops are deprecated

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