do…while 文を一言でいうと
do...while 文は、
「必ず 1 回は実行してから、“まだ続ける?” と後で確認するループ」 です。
普通の while 文は「最初に条件をチェックして、OK なら中身を実行」ですが、do...while は「先に中身を実行して、そのあと条件をチェック」します。
ここが重要です。
do…while は「最低 1 回は必ず実行したい」処理に使うループ です。
「条件を満たさなくても 1 回はやりたい」のか、「条件を満たしたときだけやりたい」のか、この違いを意識できると腑に落ちます。
do…while 文の基本構文と流れ
基本の形
構文はこうなります。
do {
// 繰り返したい処理
} while (条件);
JavaScriptポイントは「セミコロン ; が while のあとに要ること」です。
実行の流れを順番に追う
- まず、
do { ... }の中身が 必ず 1 回実行される - 処理が終わったら、
while (条件)の条件式が評価される - 条件が
trueなら、もう一度{...}の中身に戻る - 再び終わったら、また条件をチェック
- 条件が
falseになった瞬間、ループを終了する
普通の while 文との一番大きな違いは、
「条件のチェックが“後ろ”にある」 ことです。
while 文との違いを、同じ例で比べてみる
普通の while 文の場合
1〜3 を表示する while 文はこうでした。
let i = 1;
while (i <= 3) {
console.log(i);
i++;
}
JavaScript条件が最初にチェックされます。
もし最初から i が 10 だった場合は、一度も中身は実行されません。
do…while 文で書き直す
同じことを do…while で書くとこうなります。
let i = 1;
do {
console.log(i);
i++;
} while (i <= 3);
JavaScript動きとしては、今回の例では while とほぼ同じです。i が 1 から始まるので、1, 2, 3 が表示されます。
違いがハッキリ出るパターン
最初から i が 10 だったらどうなるか、比べてみます。
// while 版
let i = 10;
while (i <= 3) {
console.log(i); // 実行されない
i++;
}
JavaScripti <= 3 が最初から false なので、中身は一度も実行されません。
// do...while 版
let i = 10;
do {
console.log(i); // ☆ ここは1回実行される
i++;
} while (i <= 3);
JavaScriptdo…while は、条件に関係なく中身を「先に」実行するので、
10 が 1 回だけ表示され、その後 i <= 3 が false なのでループ終了です。
ここが重要です。
do…while は、「条件を満たしていなくても、とりあえず 1 回はやる」が大前提。
while は、「条件を満たしていなければ、1 回もやらない」。
この“0 回の可能性があるか / ないか”が大きな違いです。
do…while が活きる典型パターン
JavaScript では、実務では while や for のほうがよく使われますが、
do…while の考え方は知っておくと「ループの設計力」が上がります。
(ブラウザの prompt など実行しにくいものは雰囲気だけつかんでください)
例1:ユーザー入力を 1 回以上は必ず受け取る
「ユーザーに何か入力してもらって、条件を満たしていなければ再入力させる」
こういうパターンでは、
- 入力 → チェック → 必要ならもう一度
という「最低 1 回の入力」が必須です。
擬似的なコードで書くと:
let name;
do {
// 本当は prompt を使ったりする:
// name = prompt("名前を入力してください:");
name = "太郎"; // ここは仮の入力値だと思ってください
} while (!name);
JavaScript流れとしては:
- まず一度「名前を聞く」処理が実行される
- name が空文字などなら
!nameが true になり、もう一度聞く - 正しい名前が入ったら
!nameが false になってループ終了
「最初の一回は、とにかく聞く必要がある」
こういうときに do…while は自然な形をしています。
例2:一度は処理してから「続けるか?」を決めたい場合
例えば、ログをまとめて送る処理をイメージしてみます。
- まず 1 回は送信してみる
- まだデータが残っていれば、続けて送る
- データがもう無ければ終わる
という流れです。
擬似コードで表すと:
let hasMore = true;
do {
console.log("バッチを送信しました");
// hasMore の値を更新すると仮定
hasMore = false; // ここでは仮に false にしておく
} while (hasMore);
JavaScriptここでも、「最初の 1 回」は必ず実行されます。
そのあと、「まだやる?」を hasMore で判定しています。
ここが重要です。
do…while は、「最低 1 回の処理が本質」のときに自然な形になります。
“実行 → チェック → 実行 → チェック…”という順番が、while や for と逆向きになっている、と捉えるとわかりやすいです。
do…while の書き方でよくある注意点
while のあとにセミコロンを忘れない
do…while だけの小さな罠ですが、while (条件) のあとに ; が必要です。
do {
// ...
} while (条件); // ← ここ
JavaScriptセミコロンを忘れると文法エラーになります。
無限ループに気をつけるのは while と同じ
条件が変化しないと、do…while でも無限ループになります。
let i = 0;
do {
console.log(i);
// i++ を書き忘れた!
} while (i < 5);
JavaScriptこの場合、i はずっと 0 のままなので、i < 5 は永遠に true のまま。
結果として抜けられなくなります。
do…while でも、条件に関わる変数を、ループの中で必ず変化させる 必要があります。(これは while と全く同じです)
ここが重要です。
do…while は「必ず 1 回実行される」ので、バグると「必ず 1 回は暴れる」ループになります。
条件をどこで false にするのか、自分の頭ではっきり説明できてから書くようにしてください。
do…while をいつ使うか・どこまで知っておけばいいか
実務では「知っておけば十分」レベル
JavaScript の現場では、for と while だけで書かれたコードのほうが圧倒的に多いです。
do…while は、「使えるけどあまり見ない」という位置付けに近いです。
ただし、だからと言って「知らなくていい」という話ではなくて、
- ループの考え方(前判定 / 後判定)を理解する
- 「必ず 1 回は実行されるループ」の表現方法を知る
という意味では、言語の理解を一段深くしてくれる存在 です。
書き方のパターンを 1 つ知っておけばOK
最低限、このパターンを頭に入れておけば十分です。
let x = 初期値;
do {
// x を使った処理
// ここで x を更新する
} while (続ける条件);
JavaScriptそして、「こういうときに使う」とイメージできれば大丈夫です。
- 最初の 1 回は、必ず処理を行いたい
- そのあと、「まだ続けるべきか」を条件で決めたい
ここが重要です。
do…while にこだわる必要はありませんが、
“必ず 1 回実行されるループ” という概念を知っておくと、
他の言語を触るときや、ループの設計を考えるときに役に立ちます。
「実行 → 条件チェック」のループがある、と覚えておいてください。
初心者として「do…while 文」で本当に押さえてほしいこと
do…while は、「必ず 1 回は中身を実行してから、条件が true のあいだ繰り返す」ループ構文。
普通の while は「条件を満たさなければ 1 回も実行されない」が、do…while は「条件に関係なく 1 回は実行される」。
書き方はdo { 処理 } while (条件);
で、while のあとのセミコロンを忘れないこと。
「入力を 1 回以上受け取る」「最初は必ず処理したい」など、
“実行 → チェック” の流れが自然な場面で使うとフィットする。
while と同じく、「条件が false になるきっかけ(変数の更新など)」を必ずループの中に用意しないと無限ループになる。
ここが重要です。
do…while 文は、“まずやってから考える” タイプのループです。
コードにする前に、
「この処理は、0 回でもいいのか? それとも 1 回は必ず必要か?」
と自分に問いかけてみてください。
その問いに「1 回は必要だな」と感じたとき、do…while の存在意義がストンと腑に落ちます。
もし手を動かしてみたくなったら、次のような練習をしてみてください。
// 練習1:
// let n = 1 から始めて、do...while で
// 「n を表示してから、n++ して、n が 5 以下のあいだ続ける」
// というコードを書いてみる(1〜5が表示されるか確認)。
// 練習2:
// while 版と do...while 版の両方を書き、
// それぞれで「最初から n = 10 にした場合」の動きを比べてみる。
// どちらが 1 回も実行されないか? どちらが 1 回は実行されるか? を確認する。
JavaScriptそうやって、「実際にどう動くか」を自分の目で確かめると、
do…while が頭だけでなく、感覚としても理解できるようになります。
