do...while文を使った繰り返し処理

JavaScript で繰り返し処理を行う方法のひとつである do...while 文の使い方について解説します。 do while 文では while 文と同じく条件式が true を返すあいだ繰り返し処理を行う点は同じですが、必ず 1 回は繰り返し処理が実行される点が異なります。

(Last modified: )

do...while文の基本書式

do...while 文では括弧()の中に記述した条件式が true を返すあいだ、繰り返し処理を行います。書式は次の通りです。

do{
  実行する文1;
  実行する文2;
  ...
}while (条件式);

繰り返し実行する文が 1 つだけだった場合にはブロックを表す {} を省略することができます。

do
  実行する文;
while (条件式);

※ while の最後にセミコロン(;)が必要な点に注意してください。

do...while 文は while 文と似ていますが、 while 文が最初に条件式を評価し、場合によっては 1 回も繰り返し処理が行われない場合があるのに対して、 do...while 文では繰り返し処理を行ってから条件式の評価を行うため必ず 1 回は繰り返し処理が行われる点が異なります。

簡単なサンプルをみてください。

let num = 4;

do {
  console.log(num);
  num = num * 4;
}while (num < 100);

console.log('end');

do...while 文では初期化式のようなものありませんので、必要な変数の宣言や初期化などは do...while 文の外で行います。

let num = 4;

do {
  console.log(num);
  num = num * 4;
}while (num < 100);

console.log('end');

do...while 文ではまず do...while 文のブロック内の処理を 1 回行います。 do...while 文でも while 文と同様に自分で条件式が変化する処理を記述しなければなりません。

do {
  console.log(num);
  num = num * 4;  // 条件式が変化する文が必要となる
}while (num < 100);

ブロック内の処理が終わりましたらここで条件式が評価されます。条件式は num < 100 の部分です。

do {
  console.log(num);
  num = num * 4;
}while (num < 100);

条件式を評価した結果として true が返された場合には do...while 文の最初に戻り改めてブロックの中の処理を順に実行します。 false が返された場合には do...while 文の次へ処理が移ります。これを 条件式が false を返すまで繰り返します。

それでは do...while 文が実行されてから do...while 文の次へ処理が移るまでを実際にひとつずつ見てみます。

1) 変数 num に初期値 4 を代入

-- 繰り返し処理 1 回目 --
2) console.log(num); が実行される
3) 変数 num に格納されている値が 4 倍となり 16 になる
4) 条件式 num < 100 が true

-- 繰り返し処理 2 回目 --
5) console.log(num); が実行される
6) 変数 num に格納されている値が 4 倍となり 64 になる
7) 条件式 num < 100 が true

-- 繰り返し処理 3 回目 --
8) console.log(num); が実行される
9) 変数 num に格納されている値が 4 倍となり 256 になる
10) 条件式 num < 100 が false
11) do...while 文の実行が終了し次の処理へ

12) console.log('end'); が実行される

実際に先ほどのサンプルを実行してみると、次のようにコンソールに出力されます。

let num = 4;

do {
  console.log(num);
  num = num * 4;
}while (num < 100);

console.log('end');
>> 4
>> 16
>> 64
>> end

do...while文のいろいろな使い方

do...while 文は条件式が true の間は回数に関係なく繰り返しますので、繰り返し回数が決まっていないような処理に向いています。

下記のサンプルでは乱数を使って 1 から 6 までの数字を出し、 6 が出たら do...while 文が終了となります。 6 が出た場合でもコンソールへの出力は行った上で終了となります。実行するたびに結果が異なり、何回繰り返し処理が行われるのかは分かりません。

let dice;

do {
  dice = Math.floor(Math.random() * 6) + 1;
  console.log(dice);
} while (dice != 6);

console.log('end');
>> 2
>> 4
>> 3
>> 2
>> 6
>> end

-- --

JavaScript で繰り返し処理を行う方法のひとつである do...while 文の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。