for each...in 文は ECMA-357 (E4X) から廃止されました。E4X へのサポートは除かれましたが、後方互換性のため for each...in 文が無くなる事はありません。代替として、for...of 文が推奨されます。(バグ 791343 をご覧ください)

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 で実装され、非推奨になりました。

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート 未サポート 1.5 (1.8) 未サポート 未サポート 未サポート
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート 未サポート 未サポート 1.0 (1.0) 未サポート 未サポート 未サポート

参照

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

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

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