while 文を一言でいうと
while 文は、
「ある条件が true のあいだ、ずっと同じ処理を繰り返す仕組み」 です。
for 文は「何回回すか」を自分で設計するイメージでしたが、
while 文は「この条件が続くかぎり回す」というイメージに近いです。
ここが重要です。
while 文は、「回数が決まっていない/条件が続くかぎり繰り返したい」 という場面で力を発揮します。
ただし、条件がいつか false にならないと、延々と回り続ける(無限ループ)ので、その点はとくに意識が必要です。
while 文の基本構文と流れ
基本の形
一番シンプルな形はこうです。
while (条件) {
// 条件が true のあいだ、ここが繰り返し実行される
}
JavaScript流れは、次のようになります。
- まず
(条件)を評価する - 条件が
trueなら、波かっこの中の処理を実行 - 処理が終わったら、また条件をチェック
- また
trueなら、もう一度中身を実行 - これを、条件が
falseになるまで続ける
条件が最初から false なら、中身は一度も実行されません。
ここが重要です。
while 文のポイントは、「処理の前に、毎回かならず条件チェックがある」 ということです。
「まだ続けてもいい?」と毎回聞きながら、OK のあいだだけ回るイメージを持ってください。
最初の例:1 から 5 まで数える while 文
コードと実行の流れ
まずは、for 文でやったのと同じ「1〜5 を表示する」を while で書いてみます。
let i = 1; // 初期化
while (i <= 5) { // 条件
console.log(i); // 本体
i++; // 更新
}
JavaScript実行すると、
1
2
3
4
5
と表示されます。
流れをコマ送りで追うと、こうなります。
1 回目
- i は 1(事前に代入してある)
i <= 5→ 1 <= 5 は trueconsole.log(1)を実行i++で i は 2
2 回目
i <= 5→ 2 <= 5 は trueconsole.log(2)i++で 3
…
i が 5 のときも同様に実行され、最後に i が 6 になったところで、
i <= 5 → 6 <= 5 は false になり、そこでループ終了です。
ここが重要です。
while 文では、「初期化」「条件」「更新」がバラバラに書かれます。
for 文の丸かっこの中にまとめていた 3 つを、自分で順番を意識しながら配置する必要があります。
この 3 つのどれかを忘れると、無限ループや意図しない動作の原因になります。
while と for の違い・使い分けのイメージ
for 文と while 文の書き比べ
同じ処理を for で書くとこうなります。
for (let i = 1; i <= 5; i++) {
console.log(i);
}
JavaScriptwhile 版と見比べると、for は
- 初期化(
let i = 1) - 条件(
i <= 5) - 更新(
i++)
が 1 行にまとまっています。
while は、同じことをもう少しバラして書いているイメージです。
let i = 1;
while (i <= 5) {
console.log(i);
i++;
}
JavaScript動きはほぼ同じです。
どっちを使えばいいのか
ざっくりしたイメージとしては、
- 「カウンターを使って、回数や範囲がはっきりしている繰り返し」
→ for 文が向いている場面が多い - 「いつ終わるかは条件次第(例:ユーザーが ‘q’ を入力するまで)」
→ while 文のほうが自然に書けることが多い
という感じです。
ここが重要です。
for と while は「どちらが良い/悪い」ではなく、
「回数を基準に考えるか」「条件が続くかぎり、という視点で考えるか」 の違いです。
初心者のうちは、まずは for で慣れてから、「回数が決まっていない繰り返し」に while を使ってみると理解しやすくなります。
while 文の実用的な例
例1:条件を満たすまで繰り返すカウンター
「合計が 100 を超えるまで、1 ずつ足し続ける」例です。
let sum = 0;
let n = 1;
while (sum <= 100) {
sum += n;
n++;
}
console.log("合計:", sum);
console.log("n:", n);
JavaScriptここでは、「何回足すか」は最初から決まっていません。sum <= 100 が false になるまで続けたいだけです。
こういうときは、「100 回回す for」ではなく、「条件が false になるまで回す while」の方が自然です。
例2:配列を while で回す(インデックス方式)
配列も while で回せます。
const fruits = ["apple", "banana", "orange"];
let i = 0;
while (i < fruits.length) {
console.log(fruits[i]);
i++;
}
JavaScriptこれは for で書く版と同じ動きです。
for (let i = 0; i < fruits.length; i++) {
console.log(fruits[i]);
}
JavaScript配列の場合は for のほうがスッキリですが、
while でも「条件が true のあいだ」という考え方は同じだと確認するのに良い練習になります。
while 文で必ず気をつけるべきこと:無限ループ
よくあるミス:更新を忘れる
while 文で一番怖いのは、条件を false にする更新を忘れてしまうことです。
例えば、次のコードは危険です(実行しないでください)。
let i = 0;
while (i < 5) {
console.log(i);
// i++ を書き忘れた!
}
JavaScripti が 0 のまま変わらないので、i < 5 は永遠に true のままです。
結果として、console.log(i) が止まらなくなります。
条件式そのものが変化しない
少し違うパターンですが、
条件に使っている値自体が変化しないこともあります。
let keepGoing = true;
while (keepGoing) {
console.log("ずっと続きます");
// keepGoing を false にするタイミングがない
}
JavaScriptこの場合も keepGoing は true のままなので、終わりません。
ここが重要です。
while 文を書くときは、「この条件が false になるのはいつか?」を先に自分に説明できること が大切です。
説明できない while は、たいてい無限ループの危険をはらんでいます。
必ず、「どこかで変数を変えて、条件が反転するポイント」をコードの中に作ってください。
break / continue と while の組み合わせ
break で while を途中で終わらせる
break を使えば、条件とは別の理由でループを中断できます。
let i = 0;
while (true) {
console.log(i);
i++;
if (i > 5) {
break;
}
}
JavaScriptここでは、条件を while (true) にして「とりあえず無限ループ」とし、
中で if (i > 5) break; として、
「i が 5 を超えたら終わり」というルールを自分で書いています。
結果として、0〜5 まで表示したところで while を抜けます。
continue で「今回だけ」スキップする
continue を使えば、特定の条件のときに「残り処理を飛ばして次の周回に進む」ことができます。
let i = 0;
while (i < 5) {
i++;
if (i === 3) {
continue;
}
console.log(i);
}
JavaScriptこのコードは 1, 2, 4, 5 を表示し、3 のときだけ console.log をスキップします。
ここが重要です。
while に break / continue を組み合わせると、
「条件が true のあいだ」という大枠の中で、「いつ終わるか」「どこを飛ばすか」を細かく制御できる ようになります。
ただし、制御が複雑になりすぎたら、関数を分割したり、for 文など別の書き方も検討してください。
初心者として while 文で本当に押さえてほしいこと
while 文は、「条件が true のあいだ繰り返す」構文です。
処理の前に毎回条件チェックがあり、false になった瞬間にループが止まります。
for 文との大きな違いは、「初期化」「条件」「更新」がバラバラに書かれることです。
これにより柔軟になりますが、そのぶん「更新を書き忘れて無限ループ」を起こしやすくもなります。
「この条件が false になるのはどこか?」を自分で説明できてから while を書くこと。
そのために、「条件に関わる変数を、ループの中でどう変化させるか」を必ずセットで設計することが大切です。
回数がはっきりしている繰り返し(1〜10 までなど)は for 文、
「いつ終わるかは条件次第」の繰り返しは while 文、というように、「繰り返したいイメージ」に合わせて選ぶ癖をつけてみてください。
ここが重要です。
while 文は、“いつまでやる?” を条件で表現するための道具です。
書く前に、
「何が変化して、その結果いつ条件が false になるのか?」
を紙に書いて整理してみてください。
その一手間だけで、無限ループの恐怖はかなり減りますし、while 文を“自分でコントロールできている” 感覚が持てるようになります。
練習としては、次のようなことをやってみると理解が深まります。
- while で 10 から 1 までカウントダウンするコードを書く(
i--を使う)。 - 配列を while で回すコードを書き、その後 for に書き換えて比較してみる。
- 「合計が 50 を超えるまで、1 から順に足し続ける」処理を while で書き、「どこで条件が false になるか」を自分の言葉で説明してみる。
手を動かしながら、「条件」「変化」「終了」の 3 つを意識できるようになると、while 文はもう難しいものではなくなります。
