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- 各プロパティに対して実行する文。ループ内で複数の文を実行するには、それらの文をグループ化するために ブロック 文 (
{ ... }) を使ってください。
説明
ある組み込みプロパティに対しては反復されません。これらには、たとえば 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 で実装され、非推奨になりました。
ブラウザー実装状況
| デスクトップ | モバイル | サーバー | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
for each...in | Chrome 未対応 なし | Edge 未対応 なし | Firefox 未対応 1.5 — 57 | IE 未対応 なし | Opera 未対応 なし | Safari 未対応 なし | WebView Android 未対応 なし | Chrome Android 未対応 なし | Firefox Android 未対応 4 — 57 | Opera Android 未対応 なし | Safari iOS 未対応 なし | Samsung Internet Android 未対応 なし | nodejs 未対応 なし |
凡例
- 未対応
- 未対応
- 非標準。ブラウザー間の互換性が低い可能性があります。
- 非標準。ブラウザー間の互換性が低い可能性があります。
- 非推奨。新しいウェブサイトでは使用しないでください。
- 非推奨。新しいウェブサイトでは使用しないでください。