在本教程中,您将学习如何使用 JavaScript do...while 语句创建一个循环来执行语句,直到条件为 false

JavaScript do ... while 语句简介

do...while 语句创建一个循环,该循环执行指定的语句,直到条件的计算结果为false。以下语句说明 do...while 循环的语法:

do {
  statement;
} while(expression);

while 循环不同,do-while 循环总是在评估 expresion 之前至少执行一次 statement

因为 do...while 循环在每次迭代后计算表达式 expresion,所以它通常被称为测试后循环。

在循环体内,您需要修改一些变量以确保在迭代之后让 expresion 的值是 false。否则,你将有一个无限循环。

请注意,从 ES6+ 开始,while(expression) 后面的分号 ; 是可选的。所以你可以使用下面的语法:

do {
  statement;
} while(expression)

下面的流程图说明 do-while循环语句:

javascript do while

在实践中,当您希望在检查条件之前至少执行一次循环时,通常会使用 do...while 语句。

JavaScript do while 语句示例

让我们举一些使用 do...while 语句的例子。

JavaScript do while 语句示例

以下示例使用 do...while 语句将 0 到 4 的五个数字输出到控制台:

let count = 0;
do {
  console.log(count);
  count++;
} while (count < 5)

输出:

01234

在这个例子中:

  • 首先,声明变量 count 并将其初始化为零。
  • 其次,打印 count 变量并在每次迭代中将其值增加 1,直到其值大于或等于 5。

JavaScript do while语句制作一个简单的猜数游戏

下面的示例使用 do...while 语句生成猜数游戏。

该脚本生成一个介于 1 和 10 之间的随机整数。您必须进行多次猜测,直到您的数字与随机数匹配。

// 随机生成一个 1 - 10 秘密数字
const MIN = 1;
const MAX = 10;

let secretNumber = Math.floor(Math.random() * (MAX - MIN + 1)) + MIN;

let guesses = 0; // 变量保存要猜测的数字
let hint = ''; // 变量保持猜对的数字
let number = 0;
do {
  // 获取用户的输入
  let input = prompt(`Please enter a number between ${MIN} and ${MAX}` + hint);

  // 将用户输入转换为整形数值
  number = parseInt(input);

  // 增加数字次数
  guesses++;

  // 检查用户输入的与要猜测数值是否正确
  if (number > secretNumber) {
    hint = ', and less than ' + number; // less than 小于
  } else if (number < secretNumber) {
    hint = ', and greater than ' + number; // greater than 大于
  } else if (number == secretNumber) {
    alert(`Bravo! you're correct after ${guesses} guess(es).`);
  }
} while (number != secretNumber);

代码如何运行的。

首先,声明 MIN 和 MAX 常量并将它们的值初始化为 1 和 10:

const MIN = 1; 
const MAX = 10;

第二、用 Math.random() 函数生成一个随机浮点数,取值范围在 0 和 1 之间(包括0但不包括1)。

要生成介于 MIN 和 MAX 之间的随机数,请使用以下表达式:

Math.random() * (MAX - MIN + 1)

但是,结果是一个浮点数。因此,您需要使用 Math.floor() 函数将其转换为整数:

Math.floor(Math.random() * (MAX - MIN + 1))

要生成介于最小值和最大值之间的随机数,请使用以下表达式:

let secretNumber = Math.floor(Math.random() * (MAX - MIN + 1)) + MIN;

第三,定义三个变量,用于存储猜测次数、提示次数和用户输入的次数:

let guesses = 0; // 猜测次数
let hint = ''; // 提示次数
let number = 0;

第四、使用 prompt() 函数获取用户的输入:

let input = prompt(`Please enter a number between ${MIN} and ${MAX}` + hint);

请注意,prompt() 函数仅适用于浏览器。如果在 node.js 等其他环境运行代码,请选择对应的函数。

prompt() 函数返回一个字符串,因此,您需要使用 parseInt() 函数将其转换为整数:

number = parseInt(input);

第四、在每次迭代的增加猜测次数:

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).`);
}

第七,执行下一次迭代,直到数字与秘密数字匹配。

while (number != secretNumber);

结论

  • 使用 do…while 语句创建一个循环来执行重复代码,直到条件为 false 才终止 do…while 循环。