メッセージ
Warning: JavaScript 1.6's for-each-in loops are deprecated; consider using ES6 for-of instead
エラータイプ
警告
何がうまくいかなかったのか?
JavaScript 1.6 の for each (variable in obj)
ステートメントは非推奨で、近い将来削除される予定です。
例
オブジェクトの反復
特定のオブジェクトの値を反復するために、for each...in
が使用されています。
非推奨の構文
var object = { a: 10, b: 20 };
for each (var x in object) {
console.log(x); // 10
// 20
}
代わりの標準構文
指定したオブジェクトのキーを反復して、ループ内のそれぞれの値を取得するために、標準の for...in
ループを使用できます:
var object = { a: 10, b: 20 };
for (var key in object) {
var x = object[key];
console.log(x); // 10
// 20
}
または、{jsxref("Statements/for...of", "for...of")}}(ES2015)と Object.values
(ES2017)を使用して、特定のオブジェクトの配列値を取得して、次のように反復処理できます:
var object = { a: 10, b: 20 };
for (var x of Object.values(object)) {
console.log(x); // 10
// 20
}
配列の反復
for each...in
は、特定の配列要素を反復するために使用されていました。
非推奨の構文
var array = [10, 20, 30];
for each (var x in array) {
console.log(x); // 10
// 20
// 30
}
代わりの標準構文
for...of
(ES2015)で同様のループができます。
var array = [10, 20, 30];
for (var x of array) {
console.log(x); // 10
// 20
// 30
}
null の可能性がある配列の反復
指定した値が null
か undefined
だった場合、 for each...in
は何もしませんが、for...of
は例外をスローします。
非推奨の構文
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
代わりの標準構文
for each...in
ステートメントを書き換えて、for...of
でも null
か undefined
を扱えるようにするには、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
オブジェクトのキー/バリューペアを反復する
非推奨の構文
for each...in
と非推奨の Iterator
オブジェクトを使用した、特定のオブジェクトのキー/バリューペアを反復する非推奨の語彙があります。
var object = { a: 10, b: 20 };
for each (var [key, value] in Iterator(object)) {
console.log(key, value); // "a", 10
// "b", 20
}
代わりの標準構文
指定したオブジェクトのキーを反復して、ループ内のそれぞれの値を取得するために、標準の for...in
ループを使用できます:
var object = { a: 10, b: 20 };
for (var key in object) {
var value = object[key];
console.log(key, value); // "a", 10
// "b", 20
}
または、{jsxref("Statements/for...of", "for...of")}}(ES2015)と Object.values
(ES2017)を使用して、特定のオブジェクトの配列値を取得して、次のように反復処理できます:
var object = { a: 10, b: 20 };
for (var [key, value] of Object.entries(object)) {
console.log(key, value); // "a", 10
// "b", 20
}