在某些使用多层嵌套for循环的场合里
会用到break和continue来中途跳转循环
break是跳出整个循环
continue是跳出当前循环,继续下次循环
而多层for循环嵌套里使用这两个关键字默认只能跳到当前for循环的上一层
如果我们需要跳到上一层的上一层,或者跳到顶层呢?
javascript为我们提供了一个循环跳转的标签 ,感觉有点类似C语言里的goto语句
here:
for(var i=0;i<5;i++){
for(var j=0;j<5;j++){
if(i===2&&j===2){
break here;
}
console.log(i,j);
}
}
上述代码中的here可以自己定义名称,另外一定要看清楚here后面是冒号可不是分号!
运行可以发现输出
0,0
0,1
0,2
0,3
0,4
1,0
1,1
1,2
1,3
1,4
2,0
2,1
可以看到循环到i=2,j=2时,直接退出了全部循环,而不是仅仅退出内层循环
为了更好的对比效果,如果我们去掉break here后面的here
运行后可以发现输出
0,0
0,1
0,2
0,3
0,4
1,0
1,1
1,2
1,3
1,4
2,0
2,1
3,0
3,1
... //省略3,2~4,3
4,4
此时break仅仅跳出了内层循环,函数会继续从外层循环i=3开始继续循环
这个输出结果显然和continue here 产生了一样的效果
(break)前者是跳出当前层循环,外层循环继续
(continue here)后者是跳到最外层循环继续