概要: このチュートリアルでは、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になるまでコードブロックを実行するループを作成します。