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

この記事は編集レビューを必要としています。ぜひご協力ください

メッセージ

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 の可能性がある配列の反復

指定した値が nullundefined だった場合、 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 でも nullundefined を扱えるようにするには、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
}

関連項目

ドキュメントのタグと貢献者

タグ: 
 このページの貢献者: YuichiNukiyama
 最終更新者: YuichiNukiyama,