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
}