译者按: 最好是不用,不过基础知识要掌握。javascript
为了保证可读性,本文采用意译而非直译。另外,本文版权归原做者全部,翻译仅用于学习。java
在这篇文章中,咱们会详细介绍continue
和break
,分析它们的相同和不一样之处,甚至用一些可运行的实例。函数
continue
和break
都是用于控制循环的。咱们先来看一下他们的定义:学习
注意:break
还能够用在switch
中,本文主要介绍在循环中的使用。ui
考虑以下代码:spa
for (let i = 1; i <= 10; i++){
console.log(i);
}
复制代码
咱们有一个简单的for循环,该循环会执行10次,i的值从1一直递增到10。每一次循环将当前i的值打印出来。执行结果以下:翻译
1
2
3
4
5
6
7
8
9
10
复制代码
若是咱们只想打印偶数,应该如何作呢?使用continue
能够很容易搞定。在每一次循环咱们检查是否为奇数,若是是,则跳出这次循环,继续下一次。若是不是,则打印i的值。debug
for (let i = 1; i <= 10; i++){
if (i % 2 == 1) continue;
console.log(i);
}
复制代码
执行结果以下:code
2
4
6
8
10
复制代码
记住,当使用continue
关键字的时候,该次循环当即结束执行,continue
日后的代码再也不被执行。cdn
咱们使用相同的循环来作例子:
for (let i = 1; i <= 10; i++){
console.log(i);
}
复制代码
若是咱们想在i的值为6的时候,终止整个循环。那么咱们可使用break
:
for (let i = 1; i <= 10; i++){
if (i == 6) break;
console.log(i);
}
复制代码
若是执行上面的代码,for循环会在i为6的时候终止执行,所以6也不会被打印到控制台。
1
2
3
4
5
复制代码
JavaScript太灵(gui)活(yi)了,出了BUG你也不知道,不妨接入Fundebug线上实时监控。
值得注意的是,break
和continue
都只对当前循环有效。若是咱们有嵌套循环,那么就要很当心了。不妨来看下面的例子:
for (let i = 0; i < 5; i++) {
if (i % 2 == 0) continue;
for (let j = 0; j < 5; j++) {
if (j == 2) break;
console.log(`i = ${i}, j = ${j}`);
}
}
复制代码
这里咱们有两个循环,每个都会执行5次(0~4)。外层的循环在i是偶数的时候,跳过当前循环执行下一个。也就是说只有i为1或则3的时候,才会执行内层的循环。
内层的循环只要j的值为2,就终止了。所以,j只有0和1。
最终结果以下:
i = 1, j = 0
i = 1, j = 1
i = 3, j = 0
i = 3, j = 1
复制代码
[Nicu Micleușanu]:最好的策略是break和continue都不要用。若是你用了,证实你哪里搞错了,尝试换个方法。
[Brandon Morelli]: 我赞成用函数式的方法更好,来避免使用for循环。不过呢,理解continue
和break
的异同点仍是很重要的,万一哪天遇到了呢。