edubun
日本語

ループ:for と while

1 から 100 までの整数を手で足すと時間がかかります。三行の for ループなら一瞬で計算して、5050 と表示します。

同じことを何度もする

1 から 5 までの数を表示するのに console.log を五行書くのはかまいません。でも 1 から 1,000 までをそのやり方で表示するのは無理です。ループは同じコードのブロックを、毎回少しずつ変えながら、条件が止まれと言うまで何度も実行します。ループこそコンピューターの本領です。コンピューターは飽きることも、数えまちがえることもありません。

for ループ

for (let i = 1; i <= 5; i++) {
  console.log(i);
}
// 1, 2, 3, 4, 5 を一行ずつ表示

for のあとのかっこには、セミコロンで区切った三つの部分が入ります。一つ目の let i = 1 は、ループが始まる前に一度だけ実行され、カウンター変数を作ります。二つ目の i <= 5 は条件で、毎回の周回の前に確かめられます。これが false になるとループは終わります。三つ目の i++ は毎回の周回のあとに実行され、カウンターを進めます。ブロックを一回通ることを反復と呼びます。たどってみましょう。i は 1 で、条件は true なので 1 が表示され、i は 2 になります。これを続けて i が 6 になると条件が false になり、プログラムは閉じ波かっこのあとから続けます。

カウンターはふつう i と呼びます。これは数学からの伝統ですが、どんな名前でもかまいません。ほかの刻みで数えることもできます。for (let i = 10; i >= 0; i -= 2) は 10、8、6、4、2、0 と数を減らしながら数えます。

合計を積み上げる

いちばんよく使うループのパターンは累積です。ループの前に変数を作り、中で更新し、あとで使います。冒頭の合計はこう書きます。

let sum = 0;
for (let i = 1; i <= 100; i++) {
  sum += i;
}
console.log(sum);   // 5050

それぞれの行がどこにあるかに注目しましょう。もし let sum = 0 がループの中にあったら、sum は反復のたびに 0 に戻ってしまいます。もし console.log が中にあったら、答えを一つ表示するのではなく、途中の合計を 100 個表示してしまいます。ループの前とあとは、ループそのものと同じくらい大切です。

while ループ

while ループには条件しかありません。条件が true であるかぎり、ブロックを実行し続けます。何回まわればよいか前もってわからないときに使います。たとえば、ある数を 1,000 をこえるまで 2 倍し続けるときです。

let n = 1;
let steps = 0;
while (n <= 1000) {
  n *= 2;
  steps++;
}
console.log(n, steps);   // 1024 10

while ループの中の何かが、いつかは条件を false にしなければなりません。n を変える行を忘れると、条件はずっと true のままです。これが無限ループで、ページが固まってしまいます。練習ボックスでそうなったら、ページを再読み込みしてコードを直しましょう。for ループでは更新の部分を見出しに書くので、このまちがいは起こりにくくなります。

break と continue

ループの中の流れを変えるキーワードが二つあります。break はすぐにループをぬけます。continue は今の反復の残りを飛ばして、次の反復に進みます。たとえば、1 から 10 までのループの先頭に if (i % 3 === 0) continue; を置くと、3、6、9 以外のすべての数が表示されます。

例題。1 から 50 までの数のうち、7 の倍数はいくつあるでしょうか。let count = 0 から始め、i を 1 から 50 までループさせ、中に if (i % 7 === 0) count++; と書きます。ループのあと、count は 7 になります。7、14、21、28、35、42、49 です。

for (初期化; 条件; 更新) { 本体 } for (let i = 1; i <= 5; i++)

ループブロックを何度もくり返し実行するコード
反復ループの本体を一回通ること
カウンター周回を数える変数。よく i を使う
累積変数sum のように、ループの中で積み上げていく変数
while条件が true のあいだくり返す
無限ループ条件がいつまでも false にならないループ
break今すぐループをぬける
continue次の反復へ飛ぶ
  1. 何行表示されますか?
    for (let i = 0; i < 4; i++) {
      console.log(i);
    }
  2. 最後に表示される数はいくつですか?
    for (let i = 0; i < 4; i++) {
      console.log(i);
    }
  3. 何が表示されますか?
    let total = 0;
    for (let i = 1; i <= 4; i++) {
      total += i;
    }
    console.log(total);
  4. 何が表示されますか?
    let p = 1;
    for (let i = 1; i <= 5; i++) {
      p *= 2;
    }
    console.log(p);
  5. 何が表示されますか?
    let n = 10;
    while (n > 3) {
      n -= 3;
    }
    console.log(n);
  6. 何行表示されますか?
    for (let i = 10; i >= 0; i -= 2) {
      console.log(i);
    }
  7. 何が表示されますか?
    for (let i = 1; i <= 10; i++) {
      if (i === 4) break;
      console.log(i);
    }
    • 1 2 3 on separate lines
    • 1 to 10 except 4
    • 1 2 3 4 on separate lines
  8. 何行表示されますか?
    for (let i = 1; i <= 10; i++) {
      if (i % 2 === 0) continue;
      console.log(i);
    }
  9. このループのどこがまちがっていますか?
    let i = 0;
    while (i < 5) {
      console.log(i);
    }
    • どこもまちがっていない
    • i が変わらないので、いつまでも止まらない
    • 何も表示しない
  10. 何が表示されますか?
    let count = 0;
    for (let i = 1; i <= 50; i++) {
      if (i % 7 === 0) count++;
    }
    console.log(count);
ポイント
  • for (初期化; 条件; 更新) { ... } は、条件が true のあいだくり返す。
  • 累積変数はループの前に作り、中で更新し、あとで使う。
  • while (条件) { ... } は、何回まわるかわからないループに向いている。
  • 何かが条件を false にしないと、ループは終わらない。
  • break はループをぬけ、continue は次の周回へ飛ぶ。
このコースの出典 (2)
  • MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
  • Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)

確認日: 2026-10-17