1. JavaScript 基础

  2. 深入数据和类型

  3. 函数进阶

  4. 运算符

  5. 浏览器存储

  6. Document

  7. Web API

  8. 事件

  9. 工具与规范

  10. 实例

  11. 练习

日常生活中经常需要执行一些重复的操作。

while 循环则提供了一种循环执行代码的方式,语法如下:

while (condition) {
    code
}

conditiontrue 时,会一直执行 code 中的内容。

$$edit$$
$$jsdemo$$
let hour = 2
while (hour < 6) {
    alert(`才${hour}点,打工!`)
    hour++
}
alert(`${hour}点了,下班!`)

死循环

格外注意的是, condition 判断条件需要在某一时刻为 false 或者有 break 结束循环。否则会一直在循环内无法结束,被称为死循环。后续的代码也会无法执行,严重的情况下会造成页面没有响应(卡死)。

$$edit$$
$$jsdemo$$
let hour = 2
while (hour < 6) {
    alert(`才${hour}点,打工!`) // 永远无法结束的打工生涯
}
alert(`${hour}点了,下班!`)

$$tip

如果运行代码导致页面卡死可以选择直接关闭页面。

$$

break 关键字

break 出现在循环中时会直到结束当前循环的作用,因此可以用 break 改写以上的代码。

$$edit$$
$$jsdemo$$
let hour = 2
while (true) {
    alert(`才${hour}点,打工!`)
    hour++

    if (hour >= 6) {
        break
    }
}
alert(`${hour}点了,下班!`)

结束标签处的循环

break <labelName> 可以让代码结束标签处的循环,语法如下:

labelName: while (condition) {
    break labelName
}

这是因为 break 只能结束当前循环,如果存在多层循环有时会出现结束上层循环的需求。

$$edit$$
$$jsdemo$$
let today = 1
let hour = 2
while (today <= 5) {
    while (hour < 6) {
        if (today == 2 && hour == 3) {
            console.log("腿断了,休假。")
            break
        }

        console.log(`今天周${today},才${hour}点,打工!`)
        hour++
    }
    hour = 2
    today++
}

比如以上的代码中,腿断了应该休假一整周,而不止一天。

$$tip

打开开发者控制台查看 console.log 输出的值。

$$

修改成以下代码,来结束标记处的循环。

$$edit$$
$$jsdemo$$
let today = 1
let hour = 2
week: while (today <= 5) {
    while (hour < 6) {
        if (today == 2 && hour == 3) {
            console.log("腿断了,休假。")
            break week
        }

        console.log(`今天周${today},才${hour}点,打工!`)
        hour++
    }
    hour = 2
    today++
}

continue 关键字

continue 关键字可以跳过当前循环直接进入下一次循环。

$$edit$$
$$jsdemo$$
let hour = 2
while (hour < 6) {
    if (hour == 3) {
        alert("3点了,饮茶先啊。")
        hour++
        continue
    }

    alert(`才${hour}点,打工!`)
    hour++
}
alert(`${hour}点了,下班!`)

do...while 循环

do...while 循环与 while 循环类似,唯一的不同点在于:

  • do...while 循环是先执行一轮代码,再进行条件判断。
  • while 循环是每轮代码执行前都会进行条件判断。
do {
    // code
} while (condition)

因此 do...while 是先执行再判断,因此n

$$jsdemo$$
$$edit$$
do {
    alert("至少被执行一次")
} while (false)

练习

1.这个月有 30 天,第一天是周四。周日分别都是多少号,将它们打印(console.log)出来。

2.设计一个程序,打印出 100 以内的所有质数

3.存在两个正整数 a、b(用户输入),求出它们的最大公约数