JavaScript入門 練習問題 36:構文:do-whileループとwhileループの違い
次のコードを実行したときのコンソールへの出力として正しいものはどれですか?
```javascript
let count = 5;
do {
console.log(count);
count++;
} while (count < 5);
```
- 5(doブロックの処理が一度実行されてから条件が判定されるため)
- 何も出力されない(条件が最初からfalseのため処理が一切実行されない)
- 5 6 7と無限に出力され続ける(条件が常にtrueになる無限ループが発生する)
- 構文エラーが発生する(doとwhileの組み合わせは無効な構文である)
- undefinedが出力される(countの初期化前に参照されると判定される)
正解と解説を見る
正解:5(doブロックの処理が一度実行されてから条件が判定されるため)
do-while文はブロック内の処理を先に一度実行してから条件を判定するため、条件がfalse(count<5はfalse)であってもcount=5が一度だけコンソールに出力されます。
【正解の理由】
do-while文の特徴は「最低1回は処理を実行してから条件判定を行う」点にあり、count=5の時点でwhile文の判定に到達する前に既に一度console.logが実行されるため、5が出力されます。
【不正解の理由】
• 「何も出力されない」という説明:これはwhile文(前判定ループ)の挙動であり、do-while文は先に処理を実行するため誤り
• 「5 6 7と無限に出力され続ける」という説明:countは1回のループでインクリメントされ6になり、条件count<5は満たされないためループは1回で終了する
• 「構文エラーが発生する」という説明:do-while文はJavaScriptの正式な構文であり、エラーにはならない
• 「undefinedが出力される」という説明:countはlet count = 5;で明示的に初期化されているため、undefinedになることはない