在某些使用多层嵌套for循环的场合里
会用到break和continue来中途跳转循环
break是跳出整个循环
continue是跳出当前循环,继续下次循环
而多层for循环嵌套里使用这两个关键字默认只能跳到当前for循环的上一层
如果我们需要跳到上一层的上一层,或者跳到顶层呢?
javascript为我们提供了一个循环跳转的标签 ,感觉有点类似C语言里的goto语句
1 here: 2 for(var i=0;i<5;i++){ 3 for(var j=0;j<5;j++){ 4 if(i===2&&j===2){ 5 break here; 6 } 7 console.log(i,j); 8 } 9 }
上述代码中的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)后者是跳到最外层循环继续