JavaScript while 循环

while 循环适合"不知道具体要循环多少次、只知道满足什么条件就继续"的场景,例如等待用户输入正确、反复重试请求等。它和 for 可以互相转换。

while 语法

先判断条件,条件为 true 才执行循环体,每轮结束后再次判断:

let i = 1;
while (i <= 3) {
  console.log(i); // 输出:1 2 3(每行一个)
  i++;            // 循环体内要更新变量,否则无法退出
}

do...while 语法

do...while 先执行一次循环体,再判断条件,因此至少会执行一次

let n = 5;
do {
  console.log("执行了一次:" + n); // 输出:执行了一次:5
  n++;
} while (n < 3); // 条件为 false,但循环体已经执行过了

典型场景:累加求和

同样的求和用 while 写出来长这样:

let sum = 0;
let i = 1;
while (i <= 100) {
  sum += i;
  i++;
}
console.log(sum); // 输出:5050

倒计时示例

条件变量每轮都要朝退出方向改变,否则容易死循环:

let count = 5;
while (count > 0) {
  console.log(count); // 输出:5 4 3 2 1(每行一个)
  count--;            // 每轮减 1,直到 count 为 0 退出
}

适合 while 的真实场景

次数不确定时 while 更自然,例如反复掷骰子直到出现 6:

let dice = 0;
let rounds = 0;
while (dice !== 6) {
  dice = Math.floor(Math.random() * 6) + 1;
  rounds++;
  console.log("第 " + rounds + " 次掷出 " + dice); // 输出:随机 1~6,直到出现 6
}
console.log("共掷了 " + rounds + " 次"); // 输出:共掷了 N 次

小结

while 先判断后执行,do...while 至少执行一次。两者都必须在循环体内更新条件变量;"次数确定用 for、条件驱动用 while"是最常用的取舍原则。

笔记加载中…