摘要: 本教程将学习如何使用 JavaScript do...while
语句来创建循环,该循环会一直执行代码块,直到条件为 false
为止。
JavaScript do…while 语句简介
do...while
循环语句创建一个循环,该循环会一直执行代码块,直到条件计算结果为 false
为止。以下语句说明了 do...while
循环的语法
do {
statement;
} while(expression);
Code language: JavaScript (javascript)
与 while
循环不同,do-while
循环始终至少执行一次 statement
,然后再计算 expression
的值。
由于 do...while
循环在每次迭代后计算表达式的值,因此它通常被称为后测试循环。
在循环体内部,你需要对一些 变量 进行更改,以确保 expression
在经过几次迭代后变为 false
。否则,你将得到一个无限循环。
请注意,从 ES6+ 开始,while(expression)
后的尾部分号 (;
) 是可选的。因此,你可以使用以下语法
do {
statement;
} while(expression)
Code language: JavaScript (javascript)
下图是 do-while
循环语句的流程图
在实践中,当你想在检查条件之前至少执行一次循环体时,你经常使用 do...while
语句。
JavaScript do while 语句示例
让我们看一些使用 do...while
语句的示例。
1) 简单 JavaScript do while 语句示例
以下示例使用 do...while
语句将 0 到 4 之间的五个数字输出到控制台
let count = 0;
do {
console.log(count);
count++;
} while (count < 5)
Code language: JavaScript (javascript)
输出
0
1
2
3
4
在本例中
- 首先,声明并初始化
count
变量为零。 - 其次,在每次迭代中显示
count
并将其值增加一,直到其值大于或等于 5 为止。
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 之间的随机浮点数(包含零但不包含一)。
要生成一个介于 MIN 和 MAX 之间的随机数(不包含 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)
第三,定义三个变量,用于存储猜测次数、提示和用户的输入数字
let guesses = 0; // for storing the number of guesses
let hint = ''; // for storing hint
let number = 0;
Code language: JavaScript (javascript)
第四,使用 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)
第五,在每次迭代中增加猜测次数
guesses++;
第六,检查输入数字与秘密数字(随机)数字是否匹配,并给出提示。如果数字匹配,则使用 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)
第七,继续执行迭代,直到数字与秘密数字匹配。
while (number != secretNumber);
Code language: JavaScript (javascript)
总结
- 使用
do…while
语句来创建循环,该循环会一直执行代码块,直到条件为false
为止。