在某些使用多层嵌套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,00,10,20,30,41,01,11,21,31,42,02,1
可以看到循环到i=2,j=2时,直接退出了全部循环,而不是仅仅退出内层循环
为了更好的对比效果,如果我们去掉break here后面的here
运行后可以发现输出
0,00,10,20,30,41,01,11,21,31,42,02,13,03,1... //省略3,2~4,34,4
此时break仅仅跳出了内层循环,函数会继续从外层循环i=3开始继续循环
这个输出结果显然和continue here 产生了一样的效果
(break)前者是跳出当前层循环,外层循环继续
(continue here)后者是跳到最外层循环继续