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

Mensagem

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

Tipo de mensagem

Warning

O que aconteceu de errado?

A declara√ß√£o for each (variable in obj) do JavaScript 1.6 foi descontinuada e ser√° removida num futuro pr√≥ximo.

Exemplos

Iteração do objeto

for each...in tem sido usada para iterar por valores específicos do objeto.

Sintaxe descontinuada

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

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

Sintaxe padr√£o alternativa

Agora voc√™ pode utilizar o loop padr√£o for...in, para iterar sobre chaves espec√≠ficas do objeto e receber cada valor para dentro do loop:

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

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

Ou, utilizando for...of (ES2015) e Object.values (ES2017), voc√™ pode ter um array dos valores espec√≠ficos do objeto e iterar sobre o array da seguinte maneira:

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

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

Iteração sobre o Array

for each...in tem sido usado para iterar sobre elementos específicos do array.

Sintaxe descontinuada

var array = [10, 20, 30];

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

Sintaxe padr√£o alternativa

Isso agora √© poss√≠vel tamb√©m com loops for...of (ES2015).

var array = [10, 20, 30];

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

Iterando sobre um array null-able

for each...in n√£o faz nada se o valor especificado for null ou undefined, mas for...of vai disparar uma exce√ß√£o nestes casos.

Sintaxe descontinuada

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

Sintaxe padr√£o alternativa

Para reescrever as declara√ß√Ķes for each...in de modo que os valores possam ser null ou undefined com for...of tamb√©m, voc√™ precisa utilizar algo como for...of.

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

Iterando sobre um par chave-valor de um objeto

Sintaxe descontinuada

Existe um idioma descontinuado para iterar sobre pares chave-valor espec√≠ficos de um objeto, utilizando for each...in e o objeto descontinuado Iterator.

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

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

Sintaxe padr√£o alternativa

Você pode utilizar agora o loop padrão for...in para iterar sobre chaves específicas do objeto, e obter cada valor dentro do loop:

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

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

Ou utilizando for...of (ES2015) e Object.entries (ES2017), voc√™ pode obter um array dos valores espec√≠ficos do objeto e iterar sobre este array da seguinte maneira:

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

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

Veja também