在某些使用多層嵌套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)后者是跳到最外層循環繼續