--- title: for each...in slug: Web/JavaScript/Reference/Statements/for_each...in tags: - Deprecated - E4X - JavaScript - Obsolete - Statement translation_of: Archive/Web/JavaScript/for_each...in ---
{{jsSidebar("Statements")}}

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

ブラウザー実装状況

{{Compat("javascript.statements.for_each_in")}}

参照