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
- 各プロパティに対して実行する文。ループ内で複数の文を実行するには、それらの文をグループ化するためにブロック文 (
{ ... }
) を使ってください。
説明
ある組み込みプロパティに対しては反復されません。これらには、たとえば String
の indexOf
メソッドといった、オブジェクトのすべての組み込みメソッドが含まれます。しかしながら、すべてのユーザー定義プロパパティに対しては反復されます。
例
例: 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) | 未サポート | 未サポート | 未サポート |