この記事は編集レビューを必要としています。ぜひご協力ください。
メッセージ
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 }