重學JS(八)—— 跳出迴圈
遇到過幾個迴圈的問題,寫篇文章總結下。
語法
break:立即退出迴圈,強制執行迴圈後面的語句。
continue:立即退出迴圈,回到迴圈頂部繼續執行程式碼。
寫個例子感受下
let num = 0;
for(let i=0;i<10;i++){
if(i == 3)
break;
num++;
}
console.log(num); //3
num = 0;
for(let i=0;i<10;i++){
if(i == 3)
continue;
num++;
}
console.log(num); //9
差距明顯了,break跳出所有迴圈,continue只跳過當前迴圈,所以只減少了1次 num自加的過程。
跳出多層迴圈
有時會有跳出多層迴圈的需求,內層迴圈滿足某個條件時,立刻退出。
let num = 0;
for(let i=0;i<10;i++){
for(let j=0;j<10;j++){
if(j == 3)
break;
num++;
}
}
console.log(num); //30
在內層迴圈中使用break,只會跳出內層迴圈,外層的迴圈還在繼續工作。
如果想要跳出全部迴圈,該怎麼辦?
可以使用label語句。它可以在程式碼中新增標籤,以便將來使用。
let num = 0;
outer: //這裡就是label語句了
for(let i=0;i<10;i++){
for(let j=0;j<10;j++){
if(j == 3)
break outer;
num++;
}
}
console.log(num); //3。只有3,顯然連外層迴圈都跳出了。
break和continue語句都可以與label語句聯合使用,從而返回程式碼中特定的位置。
let num = 0;
outer:
for(let i=0;i<10;i++){
for(let j=0;j<10;j++){
if(j == 3)
continue outer;
num++;
}
}
console.log(num); //30
上述情況下,continuet語句會強制繼續執行迴圈——退出內部迴圈,執行外部迴圈。此時和內部迴圈中使用break效果一致。
return
程式碼中經常會出現這樣的句子
//如果未通過校驗就返回,下面的程式碼將不會再執行
if(!checkResult)
return
那麼他能用來跳出迴圈嗎?理論上是可行的,畢竟它是把整個函式結束了,試試。
let num = 0;
function test(){
for(let i=0;i<10;i++){
if(i == 3)
return;
num++;
}
console.log('finish');
}
test();
console.log(num); //3
可見他跳出了迴圈。注意,return語句就是用於指定函式返回的值。return語句只能出現在函式體內,出現在程式碼中的其他任何地方都會造成語法錯誤。因為return直接把函式返回了,所以finish沒有被列印出來。如果是break或者continue就會列印出來。
再試試跳出多層迴圈。
let num = 0;
function test(){
for(let i=0;i<10;i++){
for(let j=0;j<10;j++){
if(j == 3)
return;
num++;
}
}
}
test();
console.log(num); //3
可以。如果將需要用到多層迴圈的這部分程式碼封裝到一個函式中,不失為一個好辦法。
其他迴圈
break continue也可以用於for in,for of,while迴圈。
let obj = {
a:1,
b:2,
c:3,
d:4
}
let num = 0;
for(let key in obj){
if(key == "b")
break;
num++;
}
console.log(num); //1
num = 0;
for(let key in obj){
if(key == "b")
continue;
num++;
}
console.log(num); //3
forEach迴圈,break、continue、return命令都不能奏效。
相關文章
- 跳出多重for迴圈
- js 跳出迴圈/結束遍歷的方法JS
- JavaScript跳出for迴圈語句JavaScript
- 關於如何跳出迴圈?
- 如何在Python語言中跳出for迴圈?Python
- 【JavaScript實用技巧(一)】迴圈遍歷與跳出迴圈遍歷JavaScript
- 視訊課程-如何跳出forEach迴圈
- python 利用 for ... else 跳出雙層巢狀迴圈Python巢狀
- JS事件迴圈JS事件
- for迴圈、break和continue、二重迴圈
- 【基礎題】【for迴圈】二重迴圈
- Oracle儲存過程中跳出迴圈的寫法Oracle儲存過程
- 2024-03-21 跳出forEach迴圈的3個方法
- 第八小節 for 迴圈
- JAVA多層迴圈裡面怎麼一個break直接跳出到最外層迴圈位置Java
- 記一個 forEach 不能跳出迴圈引發的問題
- 第 7 節:流程控制-迴圈練習-跳出語句
- Java 可以採用什麼語句跳出迴圈語句Java
- Shell雙重fou迴圈
- JS事件迴圈Event LoopJS事件OOP
- JS 事件迴圈(Event Loop)JS事件OOP
- c語言中,while(1)語句使用break語句跳出迴圈C語言While
- Java Lambda表示式forEach無法跳出迴圈的解決思路Java
- while迴圈修改條件後無法跳出的疑惑(已解決)While
- JS專題之事件迴圈JS事件
- JS效能優化 之 FOR迴圈JS優化
- JS迴圈和條件分支JS
- js迴圈(for/for in/forEach/map/for of)詳解JS
- JS 總結之事件迴圈JS事件
- js--事件迴圈機制JS事件
- 學習Rust 迴圈Rust
- JS迴圈遍歷方法總結JS
- js陣列迴圈方法對比JS陣列
- JS筆記(2) JS中的迴圈遍歷JS筆記
- iOS 進階 - 記憶體管理(八) -- 迴圈引用iOS記憶體
- JS的重繪和迴流JS
- JS事件迴圈,瞭解一下?JS事件
- [譯]JS閉包:For迴圈中的setTimeoutJS