for each...in 文は ECMA-357 (E4X) の一部として廃止されました。E4X のサポートは削除されました。代替として、for...of 文が推奨されます。

Firefox は for each...in の使用に対して警告を表示します。また、Firefox 57 以降では動作しません。
移行のためのヘルプとして Warning: JavaScript 1.6's for-each-in loops are deprecated をご覧ください。

for each...inは指定された変数を、オブジェクトの全プロパティの値に対して反復します。異なるそれぞれのプロパティに対し、指定された文が実行されます。

構文

for each (variable in object) {
  statement
}
variable
任意で var キーワードを用いて宣言された、プロパティの値に対して反復する変数。この変数はループにではなく、関数にローカルです。
object
プロパティが反復されるオブジェクト。
statement
各プロパティに対して実行する文。ループ内で複数の文を実行するには、それらの文をグループ化するために ブロック 文 ({ ... }) を使ってください。

説明

ある組み込みプロパティに対しては反復されません。これらには、たとえば StringindexOf メソッドといった、オブジェクトのすべての組み込みメソッドが含まれます。しかしながら、すべてのユーザー定義プロパパティに対しては反復されます。

例: for each...in を使う

警告: このようなループを決して配列に使わないでください。オブジェクトにだけ使ってください。詳しくは for...in をご覧ください。

次のスニペットはオブジェクトのプロパティに対して反復し、それらの合計を計算します:

var sum = 0;
var obj = {prop1: 5, prop2: 13, prop3: 8};

for each (var item in obj) {
  sum += item;
}

console.log(sum); // logs "26", which is 5+13+8

仕様

現行の ECMA-262 仕様には含まれていません。JavaScript 1.6 で実装され、非推奨になりました。

ブラウザー実装状況

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本対応 なし なし1.5 — 57 なし なし なし
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
基本対応 なし なし なし4 — 57 なし なし なし

参照

  • for...in - プロパティ に対して反復する似たような文。
  • for...of - プロパティのに対して反復しますが、一般的なオブジェクトではなく反復可能な型に対してのみ使用できる似たような文。
  • for

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

このページの貢献者: yyss, teoli, MasakazuEndo, manzyun, ethertank, saneyuki_s, Mgjbot, Nanto vi
最終更新者: yyss,