概要: このチュートリアルでは、JavaScriptのdo...while
ステートメントを使用して、条件がfalse
になるまでブロックを実行するループを作成する方法を学びます。
JavaScript do...whileステートメントの紹介
do...while
ループステートメントは、条件がfalse
と評価されるまでブロックを実行するループを作成します。次のステートメントは、do...while
ループの構文を示しています。
do {
statement;
} while(expression);
Code language: JavaScript (javascript)
while
ループとは異なり、do-while
ループは、式
を評価する前に、常に少なくとも1回はステートメント
を実行します。
do...while
ループは各反復後に式を評価するため、ポストテストループと呼ばれることがよくあります。
ループ本体内では、いくつかの変数に変更を加えて、いくつかの反復後に式
がfalse
になるようにする必要があります。そうしないと、無限ループが発生します。
ES6+以降では、while(expression)
の後の末尾のセミコロン(;
)はオプションであることに注意してください。したがって、次の構文を使用できます。
do {
statement;
} while(expression)
Code language: JavaScript (javascript)
次のフローチャートは、do-while
ループステートメントを示しています。
実際には、条件をチェックする前に、少なくとも1回はループ本体を実行したい場合に、do...while
ステートメントをよく使用します。
JavaScript do whileステートメントの例
do...while
ステートメントの使用例をいくつか見てみましょう。
1)シンプルなJavaScript do whileステートメントの例
次の例では、do...while
ステートメントを使用して、0から4までの5つの数をコンソールに出力します。
let count = 0;
do {
console.log(count);
count++;
} while (count < 5)
Code language: JavaScript (javascript)
出力
0
1
2
3
4
この例では
- まず、
count
変数を宣言してゼロに初期化します。 - 次に、
count
を表示し、その値が5以上になるまで、各反復でその値を1つずつ増やします。
2)JavaScript do whileステートメントを使用して簡単な数字当てゲームを作成する
次の例では、do...while
ステートメントを使用して、数字当てゲームを生成します。
スクリプトは、1から10までのランダムな整数を生成します。そして、あなたの数字がランダムな数字と一致するまで、いくつかの推測をする必要があります。
// generate a secret number between 1 and 10
const MIN = 1;
const MAX = 10;
let secretNumber = Math.floor(Math.random() * (MAX - MIN + 1)) + MIN;
let guesses = 0; // for storing the number of guesses
let hint = ''; // for storing hint
let number = 0;
do {
// get input from user
let input = prompt(`Please enter a number between ${MIN} and ${MAX}` + hint);
// get the integer
number = parseInt(input);
// increase the number of guesses
guesses++;
// check input number with the secret number provide hint if needed
if (number > secretNumber) {
hint = ', and less than ' + number;
} else if (number < secretNumber) {
hint = ', and greater than ' + number;
} else if (number == secretNumber) {
alert(`Bravo! you're correct after ${guesses} guess(es).`);
}
} while (number != secretNumber);
Code language: JavaScript (javascript)
仕組み。
まず、MINおよびMAX定数を宣言し、それらの値を1および10に初期化します。
const MIN = 1;
const MAX = 10;
Code language: JavaScript (javascript)
次に、Math.random()
関数を使用して、0から1までの範囲(0を含むが1は含まない)の値を持つランダムな浮動小数点数を生成します。
MINとMAX(排他的)の間の乱数を生成するには、次の式を使用します。
Math.random() * (MAX - MIN + 1)
Code language: JavaScript (javascript)
ただし、結果は浮動小数点数です。したがって、Math.floor()
関数を使用して整数に変換する必要があります。
Math.floor(Math.random() * (MAX - MIN + 1))
Code language: JavaScript (javascript)
minとmaxの間の乱数を生成するには、次の式を使用します。
let secretNumber = Math.floor(Math.random() * (MAX - MIN + 1)) + MIN;
Code language: JavaScript (javascript)
3番目に、推測回数、ヒント、およびユーザーの入力番号を格納するための3つの変数を定義します。
let guesses = 0; // for storing the number of guesses
let hint = ''; // for storing hint
let number = 0;
Code language: JavaScript (javascript)
4番目に、input()
関数を使用してユーザーから入力を取得します。
let input = prompt(`Please enter a number between ${MIN} and ${MAX}` + hint);
Code language: JavaScript (javascript)
input()
関数はWebブラウザーでのみ機能することに注意してください。node.jsなどの別の環境でコードを実行する場合は、対応する関数を確認してください。
input()
関数は文字列を返すため、parseInt()
関数を使用して整数に変換する必要があります。
number = parseInt(input);
Code language: JavaScript (javascript)
5番目に、各反復で推測回数を増やします。
guesses++;
6番目に、入力番号を秘密の番号(ランダム)番号と照合し、ヒントを提供します。番号が一致する場合は、alert()
関数を使用してメッセージを表示します。
if (number > secretNumber) {
hint = ', and less than ' + number;
} else if (number < secretNumber) {
hint = ', and greater than ' + number;
} else if (number == secretNumber) {
alert(`Bravo! you're correct after ${guesses} guess(es).`);
}
Code language: JavaScript (javascript)
7番目に、番号が秘密の番号と一致するまで、次の反復を実行します。
while (number != secretNumber);
Code language: JavaScript (javascript)
概要
do...while
ステートメントを使用して、条件がfalse
になるまでコードブロックを実行するループを作成します。