myfreax

JavaScript do ... while 循环

JavaScript do...while 语句创建一个循环来执行语句,直到条件为 false

JavaScript do ... while 循环
JavaScript do ... while 循环

在本教程中,您将学习如何使用 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 循环。

内容导航