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

Esta tradução está incompleta. Por favor, ajude a traduzir este artigo.

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

Etiquetas do documento e colaboradores

Etiquetas: 
Colaboradores desta página: thiagosaife
Última atualização por: thiagosaife,