JavaScriptのdo...while文の使い方をわかりやすく解説!初心者にもできる繰り返し処理
生徒
「JavaScriptで繰り返し処理をしたいとき、while文は聞いたことがあるんですが、do...while文って何ですか?」
先生
「do...while文は、最初に一度だけ処理を実行してから、条件をチェックして繰り返す、という仕組みの文法です。」
生徒
「えっ?条件をチェックする前に実行しちゃうんですか?それって大丈夫なんですか?」
先生
「はい、安全に使えばとても便利なんですよ。それでは、初心者でもわかるように一から説明していきましょう!」
1. do...while文とは?
do...while文は、JavaScriptの基本的な「ループ処理(くりかえし処理)」の一つです。ループとは、同じ命令(処理)を何度もくり返すことです。
通常のwhile文は、最初に「条件」をチェックして、true(正しい)ならくり返しますが、do...while文は「必ず最初に1回だけ実行」してから条件をチェックします。
つまり、条件がfalse(正しくない)でも、最低1回は処理を実行するという特徴があります。
2. do...while文の基本構文
do...while文の書き方は、とてもシンプルです。次のように書きます:
do {
// くり返したい処理(最初に必ず1回実行される)
} while (条件);
doのあとに処理を書く部分があり、while (条件)の中に「いつまでくり返すか」の条件を書きます。
3. do...while文の具体例(数字を数える)
たとえば、「数字を1から5まで表示する」プログラムは、do...while文でこう書けます:
let num = 1;
do {
console.log("今の数字:" + num);
num++;
} while (num <= 5);
今の数字:1
今の数字:2
今の数字:3
今の数字:4
今の数字:5
このように、numが1のときから処理が始まり、5まで順に表示されて、条件がfalseになったら終了します。
4. なぜdo...while文が必要なの?
do...while文は、「必ず1回は実行したい」ときにとても便利です。
たとえば、「ユーザーにパスワードを入力してもらって、それが正しいかチェックする」というような場合、必ず1回は入力してもらう必要がありますよね。
そのような「入力」や「確認」などの処理では、do...while文が大活躍します。
5. 条件が最初からfalseでも実行される例
条件が最初からfalseでも、do...while文は1回だけは必ず実行されます。次の例を見てみましょう。
let count = 10;
do {
console.log("countの値:" + count);
count++;
} while (count < 5);
countの値:10
countは10なので、count < 5は最初からfalseですが、最初の1回は表示されます。
6. do...while文とwhile文の違い
ここで、while文との違いをわかりやすく表でまとめてみましょう:
| 文の種類 | 処理の流れ | 条件がfalseでも実行される? |
|---|---|---|
while文 |
最初に条件をチェック → 処理を実行 | いいえ(1回も実行されない) |
do...while文 |
最初に処理を実行 → 条件をチェック | はい(1回は必ず実行) |
7. 実際に使われる場面の例
実際のプログラムでは、次のような場面でdo...while文が使われます:
- ユーザーに「はい」か「いいえ」を入力してもらい、正しい入力まで繰り返す
- ゲームで「もう一度プレイしますか?」と聞くとき
- 最初に1回だけメニューを表示して、選択肢に応じてくり返す
8. ユーザー入力のような処理に向いている
do...while文は、「ユーザーが何かを入力するまで待つ」ような処理にとても適しています。パソコン初心者の方がよく出会うのは、「操作を入力してください」や「Y/Nを選んでください」のような場面です。
そのような場面では、必ず1回はメッセージを表示しないといけないため、do...while文がぴったりです。
9. 無限ループに注意しよう
プログラム初心者のうちは、条件の書き忘れや間違いで、無限ループ(止まらないループ)を作ってしまうことがあります。
let number = 1;
do {
console.log("number:" + number);
// number++ を書き忘れるとループが止まりません
} while (number <= 5);
number++(数字を1つ増やす)が抜けてしまうと、条件がいつまでもtrueのままになり、ずっと終わらなくなってしまいます。
ループを書くときは、「条件がいつかfalseになるように変化させる」ことがとても大事です。
10. do...while文は初心者にやさしい構文
do...while文は、JavaScriptのループ構文の中でも、特に「まず1回は試したい処理」に適しています。
初心者の方でも、ステップを追って考えれば簡単に使えるようになります。doの中に書いた処理が「最初に必ず実行される」こと、そしてwhileの部分で条件をチェックして「もう一度くり返すかどうか」を判断する仕組みを覚えておきましょう。
まとめ
ここまでJavaScriptにおける「do...while文」の基本的な使い方から、実戦での活用シーン、そして注意点まで詳しく解説してきました。プログラミングを学び始めたばかりの頃は、繰り返し処理(ループ)と聞くと「難しそう」と感じてしまうかもしれませんが、その仕組み自体は非常にシンプルです。
特にdo...while文は、「後判定ループ」と呼ばれる通り、処理を行った後に継続するかどうかを決めるため、私たちの日常生活における行動(例えば、一度試してみてから次を考えるといった動き)に近い感覚でプログラムを組むことができます。
do...while文の重要なポイントの振り返り
今回の学習で、絶対に押さえておきたいポイントを改めて整理しておきましょう。
- 最低1回の実行保証: 条件が最初から満たされていなくても、
doブロックの中身は必ず1回実行されます。 - 構文の末尾:
while (条件);のように、最後にセミコロンを忘れないようにしましょう。 - 使い分けのコツ: 「最初から条件を確認したいならwhile文」、「まず1回動かしてから考えたいならdo...while文」と使い分けます。
さらに応用!TypeScriptでの書き方
最近の開発現場でよく使われるTypeScript(タイプスクリプト)でも、do...while文の使い方はJavaScriptと全く同じです。ただし、変数に型を指定することで、より安全にループ処理を記述することができます。型を意識することで、無限ループなどのバグを未然に防ぎやすくなります。
let retryCount: number = 0;
const maxRetries: number = 3;
do {
console.log(`${retryCount + 1}回目の接続を試みています...`);
retryCount++;
// 何らかの処理(例:通信など)
} while (retryCount < maxRetries);
console.log("処理が終了しました。");
このように、型を定義しておくことで、変数に意図しない値が入るのを防ぎ、プログラムの意図を明確にすることができます。
実践的なサンプルプログラム:入力チェック
実際のWebサイト制作などで活用できる、ユーザーからの入力を受け取るシミュレーションプログラムを作成してみましょう。特定のキーワード(例:「exit」)が入力されるまで、プロンプトを出し続けるような処理です。
let userInput = "";
do {
// ブラウザの入力ダイアログを表示(実際の動作はブラウザ環境を想定)
userInput = prompt("合言葉を入力してください。終了するには「exit」と入力してください。");
if (userInput !== "exit") {
console.log("入力された言葉:" + userInput);
}
} while (userInput !== "exit" && userInput !== null);
console.log("プログラムを終了しました。");
実行結果のイメージは以下の通りです。
入力された言葉:こんにちは
入力された言葉:テスト
プログラムを終了しました。
このように、まず「入力を促す」というアクションが最初に必要な場面で、do...while文はその真価を発揮します。
最後に:プログラミング上達のコツ
繰り返し処理は、JavaScriptをマスターする上での大きな壁の一つと言われますが、do...while文を理解できれば、データの全件表示や複雑なアルゴリズムの構築にも自信が持てるようになります。
大切なのは、頭で理解するだけでなく、実際に自分の手でコードを書いて、数値を書き換えながら実行結果の変化を確認することです。もし無限ループに陥ってブラウザが固まってしまっても、それは学習の過程。失敗を恐れずに、たくさんのコードに触れてみてください。
生徒
「先生、ありがとうございました!do...while文って、最初に『とにかくやってみる!』っていう精神の持ち主なんですね。」
先生
「あはは、その表現は面白いですね!まさにその通りです。慎重派のwhile文、行動派のdo...while文といったところでしょうか。」
生徒
「行動派なのはいいですけど、さっきサンプルコードを書いてたら、条件を間違えて画面が固まっちゃいました……。」
先生
「それは『無限ループ』の洗礼を受けましたね。ループの中で変数を更新する(例えば i++ など)のを忘れると、出口がなくなってしまうんです。でも、一度経験すれば次からは注意深く書けるようになりますよ。」
生徒
「確かに、終わりの条件をしっかり決めるのが大事だと痛感しました。TypeScriptの型指定も、ミスを防ぐのに役立ちそうですね。」
先生
「その通りです!JavaScriptでの基礎がしっかりしていれば、TypeScriptへの移行もスムーズですよ。次は、配列とループを組み合わせたより実戦的な方法に挑戦してみましょうか。」
生徒
「はい!もっと色々なプログラムを作れるようになりたいので、頑張ります!」