JavaScript | 基礎構文:ループ – do…while 文

JavaScript JavaScript
スポンサーリンク

do…while 文を一言でいうと

do...while 文は、
「必ず 1 回は実行してから、“まだ続ける?” と後で確認するループ」 です。

普通の while 文は「最初に条件をチェックして、OK なら中身を実行」ですが、
do...while は「先に中身を実行して、そのあと条件をチェック」します。

ここが重要です。
do…while は「最低 1 回は必ず実行したい」処理に使うループ です。
「条件を満たさなくても 1 回はやりたい」のか、「条件を満たしたときだけやりたい」のか、この違いを意識できると腑に落ちます。


do…while 文の基本構文と流れ

基本の形

構文はこうなります。

do {
  // 繰り返したい処理
} while (条件);
JavaScript

ポイントは「セミコロン ; が while のあとに要ること」です。

実行の流れを順番に追う

  1. まず、do { ... } の中身が 必ず 1 回実行される
  2. 処理が終わったら、while (条件) の条件式が評価される
  3. 条件が true なら、もう一度 {...} の中身に戻る
  4. 再び終わったら、また条件をチェック
  5. 条件が 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++;
}
JavaScript

i <= 3 が最初から false なので、中身は一度も実行されません。

// do...while 版
let i = 10;

do {
  console.log(i); // ☆ ここは1回実行される
  i++;
} while (i <= 3);
JavaScript

do…while は、条件に関係なく中身を「先に」実行するので、
10 が 1 回だけ表示され、その後 i <= 3 が false なのでループ終了です。

ここが重要です。
do…while は、「条件を満たしていなくても、とりあえず 1 回はやる」が大前提。
while は、「条件を満たしていなければ、1 回もやらない」。
この“0 回の可能性があるか / ないか”が大きな違いです。


do…while が活きる典型パターン

JavaScript では、実務では whilefor のほうがよく使われますが、
do…while の考え方は知っておくと「ループの設計力」が上がります。

(ブラウザの prompt など実行しにくいものは雰囲気だけつかんでください)

例1:ユーザー入力を 1 回以上は必ず受け取る

「ユーザーに何か入力してもらって、条件を満たしていなければ再入力させる」
こういうパターンでは、

  • 入力 → チェック → 必要ならもう一度

という「最低 1 回の入力」が必須です。

擬似的なコードで書くと:

let name;

do {
  // 本当は prompt を使ったりする:
  // name = prompt("名前を入力してください:");

  name = "太郎"; // ここは仮の入力値だと思ってください
} while (!name);
JavaScript

流れとしては:

  1. まず一度「名前を聞く」処理が実行される
  2. name が空文字などなら !name が true になり、もう一度聞く
  3. 正しい名前が入ったら !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 の現場では、
forwhile だけで書かれたコードのほうが圧倒的に多いです。
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 が頭だけでなく、感覚としても理解できるようになります。

タイトルとURLをコピーしました