JavaScript while 和 do...while 循环

JavaScript while 循环

while 循环只要指定的条件为 true,就会重复执行一段代码。

while 循环的语法是

while (condition) {
    // body of loop
}

这里,

  1. while 循环首先计算 ( ) 中的条件。
  2. 如果条件计算结果为 true,则执行 { } 中的代码。
  3. 然后,再次计算该条件。
  4. 只要条件计算结果为 true,这个过程就会持续下去。
  5. 如果条件计算结果为 false,循环就会停止。

while 循环流程图

Flowchart of while loop in JavaScript
JavaScript while 循环流程图

示例 1:显示从 1 到 3 的数字

// initialize variable i
let i = 1;

// loop runs until i is less than 4
while (i < 4) {
    console.log(i);
    i += 1;
}

输出

1
2
3

循环的每次迭代中,上面的程序都会如此工作

变量 条件:i < 4 操作
i = 1 true 打印 1i 增加到 2
i = 2 true 打印 2i 增加到 3
i = 3 true 打印 3i 增加到 4
i = 4 false 循环终止。

要了解更多关于循环条件的信息,请访问 JavaScript 比较和逻辑运算符


示例 2:仅正数的总和

let num = 0, sum = 0;

// loop as long as num is 0 or positive
while (num >= 0) {

    // add all positive numbers
    sum += num;

    // take input from the user
    num = parseInt(prompt("Enter a number: "));
}

// last, display sum
console.log(`The sum is ${sum}`);

输出

Enter a number: 2
Enter a number: 4
Enter a number: -3
The sum is 6

上面的程序提示用户输入一个数字。

由于 JavaScript 的 prompt() 只接受 字符串 作为输入,parseInt() 会将输入转换为数字。

只要我们输入正数,while 循环就会将它们相加,并提示我们输入更多数字。

所以当我们输入一个负数时,循环就会终止。

最后,我们显示正数的总和。

注意:当我们把两个或多个数字字符串相加时,JavaScript 会将它们视为字符串。例如,"2" + "3" = "23"。所以,我们应该始终将数字字符串转换为数字,以避免意外的行为。


JavaScript do...while 循环

do...while 循环会执行一段代码一次,然后只要指定的条件为 true,就会重复执行它。

do...while 循环的语法是

do {
    // body of loop
} while(condition);

这里,

  1. do…while 循环执行 { } 中的代码。
  2. 然后,它计算 ( ) 中的条件。
  3. 如果条件计算结果为 true,则再次执行 { } 中的代码。
  4. 只要条件计算结果为 true,这个过程就会持续下去。
  5. 如果条件计算结果为 false,循环就会终止。

do...while 循环流程图

Flowchart of do...while loop in JavaScript
JavaScript do...while 循环流程图

示例 3:显示从 3 到 1 的数字

let i = 3;

// do...while loop
do {
    console.log(i);
    i--;
} while (i > 0);

输出

3
2
1

在这里,i 的初始值为 3。然后,我们使用 do...while 循环迭代 i 的值。循环在每次迭代中的工作方式如下

操作 变量 条件:i > 0
打印 3i 减为 2 i = 2 true
打印 2i 减为 1 i = 1 true
打印 1i 减为 0 i = 0 false
循环终止。 - -
while 和 do...while 循环有什么区别?

whiledo...while 之间的区别在于 do...while 循环至少执行其主体一次。例如,

let i = 0;

// false condition
// body executes once
do {
    console.log(i);
} while (i > 1);

// Output: 0

另一方面,如果循环条件为 falsewhile 循环不会执行其主体。例如,

let i = 0;

// false condition
// body not executed
while (i > 1) {
    console.log(i);
};

示例 4:正数的总和

let sum = 0, num = 0;

do {

    // add all positive numbers
    sum += num;

    // take input from the user
    num = parseInt(prompt("Enter a number: "));

    // loop terminates if num is negative
} while (num >= 0);

// last, display sum
console.log(`The sum is ${sum}`);

输出

Enter a number: 2
Enter a number: 4
Enter a number: -3
The sum is 6

在上面的程序中,do...while 循环提示用户输入一个数字。

只要我们输入正数,循环就会将它们相加,并提示我们输入更多数字。

如果我们输入一个负数,循环将终止,而不会将负数相加。


更多关于 JavaScript while 和 do...while 循环

什么是 JavaScript 中的无限 while 循环?

无限 while 循环是指循环无限运行的条件,因为其条件始终为 true。例如,

let i = 1;

// always true condition
while(i < 5) {
    console.log(i);
}

同样,这是一个无限 do...while 循环的示例,

let i = 5;

// always true condition
do {
    console.log(i);
} while (i > 1);

在上面的程序中,条件 1 > 1 始终为 true,这导致循环主体永远运行。

注意:无限循环可能导致程序挂起。所以,请避免无意中创建它们。

for 和 while 循环有什么区别?

当我们只需要执行固定次数的迭代时,我们使用 for 循环。例如,

// display hi 3 times

for (let i = 1; i <= 3; i++) {
    console.log("hi");
}

console.log("bye");

输出

hi
hi
Hi
bye

与此同时,当我们需要的终止条件可能会发生变化时,我们使用 while 循环。例如,

// display hi as long as user wants
let isDisplay = true;
let userChoice = "";

while (isDisplay) {
    console.log("hi");

    userChoice = prompt("print hi again? y for yes: ");
    if (userChoice != "y")
        isDisplay = false;
}

console.log("bye");

输出

hi
print hi again? y for yes: y
hi
print hi again? y for yes: y
hi
print hi again? y for yes: n
bye

在上面的程序中,我们让用户按他们希望的次数打印 hi

由于我们不知道用户的决定,所以我们使用 while 循环而不是 for 循环。


另请阅读

在我们结束之前,让我们来测试一下你对 JavaScript while 和 do...while 循环的掌握情况!你能解决下面的挑战吗?

挑战

编写一个函数来计算一个数字的阶乘。

  • 非负整数 n 的阶乘是所有小于或等于 n 的正整数的乘积。
  • 例如,3 的阶乘是 3 * 2 * 1 = 6
  • 返回输入数字 num 的阶乘。

视频:JavaScript while 循环

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战