break 和 continue
break 和 continue 和 return 是类似的,return 是代码返回到调用位置。
循环嵌套中的控制语句
下面示例,共两层循环,外层的称为 ⌈外部循环⌋,内层的称为 ⌈内部循环⌋,i 和 j 的值循环中依次都是 1 2 3 ,总共应循环 9 次。
for (var i = 1; i <= 3; i++) {
for (var j = 1; j <= 3; j++) {
console.log({i:i,j:j});
}
}
我们以 console.log({i:i,j:j}) 方式打印一次循环 i j 的值:

break
现在加上 break 语句,当内部循环到 j 等于 2 时执行 break 语句。

打印如下:

可以看到 j 为 2 时,内部循环被强制退出,继续外层的 for 语句。break 语句的下面 console.log 代码不会执行,内层循环的 j 为 3 也不会执行。

因此,break 可以理解为 ⌈跳出循环⌋ 或 ⌈退出循环⌋ 都可以。
continue
现把 break 换成 continue 语句:

打印如下:

可以看到内部循环到 j 为 2 时执行了指令 ⌈继续内部循环⌋,也就是回到了内部的 for 语句,下方的 console.log 不会执行,看到这里思考下为什么不会执行?如下图箭头所示,代码已回到了 for 语句那里。

continue 和 break 的不同之处在于,break 是 ⌈强制退出循环⌋,而 continue 是 ⌈强制继续循环⌋。
返回代码中特定的位置 label 语句
上方例子中的 break 和 continue 都是退出、继续当前的循环,有没有什么办法退出外层的循环?实际上它们后面可以配合 label 标签返回代码特定的位置。
outer: for (var i = 1; i <= 3; i++) {
for (var j = 1; j <= 3; j++) {
if (j == 2) { break outer; }
console.log({ i: i, j: j });
}
}
在外层的 for 语句前面加上 outer: 表示定义一个叫 outer 的标签,然后 break outer 表示返回代码的位置是最外层的 for 语句。
执行如下:

可见当 j 为 2 时,不仅退出了内部循环,也退出了外部循环。同理,把 break 换成 continue 是什么结果?

打印如下:

总结
理解 break 和 continue 其实就是计算机的调度
- 执行哪里:返回的代码位置,也就是哪个
for语句 ⌈文中的三个箭头图片⌋,整篇都在强调这一点,如果你看懂了,就都明白了。 - 执行什么:操作是 ⌈退出⌋ 还是 ⌈继续⌋。
- 语句后面的代码都不会执行,因为代码已返回到了特定位置。
扩展:PHP 如何跳出嵌套循环


JavaScript 高级程序设计(三版) 笔记
关于 LearnKu
推荐文章: