JavaScript do…while 循环

摘要: 本教程将学习如何使用 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 循环语句的流程图

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 为止。
本教程是否有帮助?