Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
ループは、何かを繰り返して行う手軽で簡単な方法を提供します。 JavaScript ガイドの本章では、 JavaScript で利用可能な反復処理を行う数々の反復文を紹介します。
ループは、ある方向に X 歩進み、次に別の方向に Y 歩進むように誰かに指示するゲームをコンピューター化した版と考えることができます。例えば、「西に 5 歩進む」という概念はループとして、下記のように表現できます。
ループには様々な種類がありますが、本質的にはそれらはすべて同じことをしています。 何らかの行為をある回数繰り返すということです(ただしその回数がゼロということもありえます)。
様々なループ機構が存在することによって、色々な方法でループの開始点と終了点を決定することができます。あるループの方が別の種類のループより簡単に目的を果たせる、という状況はたくさんあります。
JavaScript で提供されるループ文は以下のとおりです。
for 文によるループは指定された条件が false と評価されるまで繰り返されます。JavaScript の for ループは Java や C 言語の for ループと同じです。
for 文は以下のような形です。
for ループが実行されるとき、次の処理が行われます。
例えば下記の例には for 文があり、スクロールリスト(複数選択が可能な <select> 要素)で選択されたオプションの数値をカウントしています。
ここでは、 for 文が変数 i を宣言し、 0 に初期化します。 i が <select> 要素のオプション数未満であることを確認し、後続の if 文を実行し、ループ内を一通り実行した後に i を 1 ずつ加算します。
do...while 文は指定された条件が偽になるまで繰り返します。
do...while 文は以下のような形です。
文は、条件式がチェックされる前に一度ずつ実行されます。(複数の文を実行するには、ブロック文 ({ }) を使って文をグループ化します。)
条件式が true の場合、文が再び実行されます。文の実行終了時に毎回条件がチェックされます。条件が false の場合、実行は停止し、制御は do...while の次の文に渡ります。
次の例では、do ループは少なくとも一度繰り返されます。そして i が 5 未満でなくなるまで繰り返されます。
while 文は指定された条件が true と評価される限り文を実行します。 while 文は以下のようになります。
条件式が false となる場合、ループ内の文は実行を停止し、ループに続く文に制御が渡されます。
ループ内の文が実行される前に条件が検査されます。条件が true を返した場合、文が実行され、条件が再び検査されます。条件が false を返した場合、実行は停止し、 while の次の文に制御が渡されます。
複数の文を実行するには、それらの文をグループ化するブロック文 ({ }) を使用します。
次の例では、while ループは、n が 3 未満の場合繰り返されます。
各反復で、n がインクリメントされ、その値が x に加算されます。そのため、x と n は以下の値をとります。
3 回目の通過完了後、条件式 n < 3 はもはや true ではなくなるため、ループが終了します。
無限ループは避けてください。ループ内の条件が最終的に false になることを確かめるようにしましょう。さもないと、ループは永遠に終了しません。次の while ループ文は、条件が決して false にならないので永遠に実行されます :
ラベルを使って、プログラム内の他の場所から参照できる識別子を組み込んだ文が作成できます。例えば、ループの識別にラベルを使い、そのプログラムでループを中断するか、実行を継続するかどうかを指定する場合に、ラベルを break 文や continue 文で使用することができます。
ラベル文の構文は以下のようになります。
ラベルの値には、予約語でなければあらゆる JavaScript 識別子を使用できます。ラベルによって識別される文はどんな文でもかまいません。ラベル付き文の例については、下記の break と continue の例を参照してください。
break 文を使用すると、ループ、switch、ラベル文を使った関連付けを終了させることができます。
break 文の構文は下記のようになります。
次の例では、値が theValue である要素のインデックスを探すまで配列の要素を反復します。
continue 文は while、do-while、for、label 文を再起動する際に使用されます。
continue文の構文は下記のようになります。
次の例では、i の値が 3 のときに実行される continue 文が使用された while ループを示しています。この場合、n の値は 1、3、7、12 となります。
continue; をコメントアウトすると、ループは末尾まで実行され、 1,3,6,10,15 という結果になります。
次の例では、checkIandJ とラベル付けされた文には checkJ とラベル付けされた文が含まれています。continue 文に出会うと、プログラムは checkJ の現在の反復を終了し次の反復を開始します。continue に出会うたびに、checkJ はその条件が false を返すまで繰り返されます。false が返されると、checkIandJ の残りの部分が完了し、その条件が false を返すまで checkIandJ が繰り返されます。false が返されると、プログラムは checkIandJ に続く文を継続します。
もし continue が checkIandJ のラベルを持っていると、プログラムは checkIandJ のラベル文の先頭から継続されます。
for...in 文はオブジェクトにあるすべての列挙可能なプロパティに対し指定された変数を通して反復処理を行います。それぞれの異なるプロパティに、JavaScript は指定された文を実行します。for...in 文は下記のようになります。
次の関数は引数としてオブジェクトと、そのオブジェクトの名前を表す文字列を取ります。それからすべてのオブジェクトのプロパティに対して反復処理し、プロパティ名とその値を表示する文字列を返します。
make プロパティと model プロパティを持つ car オブジェクトに対し、result は下記のようになります。
car.make = Ford car.model = MustangArray の要素に対して反復処理を行う方法としてこれを使用したくなるかもしれませんが、これは数値のインデックスに加えてユーザー定義プロパティの名前も返します。
したがって、配列を繰り返し処理する場合は、数値インデックスを使用する従来の for ループを使用した方が良いでしょう。なぜなら、Array オブジェクトを変更した場合(カスタムプロパティやメソッドを追加した場合など)、 for...in 文は配列要素に加えて、ユーザー定義プロパティに対しても反復処理するからです。
for...of 文は、反復可能オブジェクト(Array、Map、Set、arguments オブジェクトなどを含む)を反復処理するループを生成し、それぞれのプロパティの値に対して実行したい文をともなって作られた反復処理フックを呼び出します。
次の例では、for...of ループと for...in ループとの違いを示しています。for...in はプロパティ名に対し反復処理する一方、 for...of はプロパティの値に対して反復処理します。
for...of および for...in 文は、構造分解でも使用することができます。例えば、 Object.entries() を使用して、オブジェクトのキーと値を同時に反復処理することができます。
This page was last modified on 2026年3月17日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.