【JavaScript】do-while文 - 反復処理 / 必ず1回は実行する繰り返し処理
JavaScriptのdo-while文(反復処理)について解説します。
検証環境
do-while文
do-while文は“反復処理を実現する構文”です。
while文やfor文と似ていますが、do-while文は必ず1回は繰り返す処理を実行します。
基本構文
do {
// 処理...
} while( 条件式 );
条件式
、処理
の部分は処理に合わせて記述します。
各項目の内容は次の通りです。
項目 | 内容 |
---|---|
条件式 | 繰り返しの条件 |
処理 | 繰り返す処理 |
条件式が真の間、繰り返し処理を続けます。
処理順序
do-while文の処理順序をサンプルコードを合わせて以下に示します。
1.処理
処理(ブロック{}
内)を実行します。
let num = 1;
do {
num *= 2;
console.log(num);
} while ( 条件式 )
サンプルコードでは4〜5行目の部分です。
2.条件式
条件式は最終的に論理値(true
/false
)となる式です。
そのため、比較演算や論理演算などを使用することが可能です。
let num = 1;
do {
num *= 2;
console.log(num);
} while ( num < 30 )
サンプルコードではnum < 30
の部分です。
3.継続・終了の判定
条件式の演算結果がtrue
の場合は継続、false
の場合はwhile文を終了します。
4.繰り返し
『1.処理』に戻ります。
以上がdo-while文の処理順序です。
ここまでのサンプルコードを実行すると次の結果になります。
2
4
8
16
32
処理順序(具体例)
上記サンプルコードの処理順序を以下に示します。
反復回数 | 項目 | コード | numの値 |
---|---|---|---|
1回目 | 処理 | num *= 2 |
2 |
console.log(num); |
2 |
||
条件式 | num < 30 |
2 |
|
継続・終了の判定 | (継続) | 2 |
|
2回目 | 処理 | num *= 2 |
4 |
console.log(num); |
4 |
||
条件式 | num < 30 |
4 |
|
継続・終了の判定 | (継続) | 4 |
|
3回目 | 処理 | num *= 2 |
8 |
console.log(num); |
8 |
||
条件式 | num < 30 |
8 |
|
継続・終了の判定 | (継続) | 8 |
|
4回目 | 処理 | num *= 2 |
16 |
console.log(num); |
16 |
||
条件式 | num < 30 |
16 |
|
継続・終了の判定 | (継続) | 16 |
|
5回目 | 処理 | num *= 2 |
32 |
console.log(num); |
32 |
||
条件式 | num < 30 |
32 |
|
継続・終了の判定 | (終了) | 32 |
5回目の条件式は演算結果がfalse
になり、その後の終了の判定となります。
do-while文の処理を掴むポイントは条件式です。
サンプルコードでは変数num
に条件式の演算結果が依存します。
そのため、変数num
がどのように変化し、条件式がどのタイミングでfalse
になるかを意識するとdo-while文の全体的な処理を理解しやすくなります。
サンプル
let total = 0;
let num = 1;
___ih_hl_start
do {
total += num;
num++;
} while( num <= 10);
___ih_hl_end
console.log(total);
55
5〜8行目がdo-while文です。
このサンプルは1
〜10
までの整数値の合計を算出します。
while文とdo-while文
while文とdo-while文の違いは“繰り返す処理を必ず1回実行するかどうか”です。
do-while文は継続・終了の判定よりも処理を先に実行するため、必ず1回は繰り返されます。
例えば次のwhile文は1度も繰り返されません。
let num = 1;
while( num < 0 ) {
num++;
console.log(num);
}
console.log("Exit.");
Exit.
しかし、do-while文の場合は1回だけ実行されます。
let num = 1;
do {
num++;
console.log(num);
} while( num < 0 );
console.log("Exit.");
2
Exit.