來談談基礎卻重要的for循環
阿新 • • 發佈:2018-02-08
https 一位 遇到 結果 stat i++ 循環語句 amp markdown
作為任何一種語言的程序員,相信你都用過各種各樣的循環語句。最近我在開發的過程中因為for循環遇到了一點堵,所以在這裏來梳理一下關於for循環的一些知識點。
最簡單的for循環
這是最容易上手的一種循環類型,然後我因為基礎知識不夠紮實在這裏踩了坑。
這是我最原始的代碼
res.chip_list = { {‘task_status‘:0}, {‘task_status‘:0}, {‘task_status‘:0}, {‘task_status‘:0}, {‘task_status‘:0}, } for (let i = 0; i <= res.chip_list.length; i++) { if (res.chip_list[i].task_status === 0) { console.log(`頁面去解鎖碎片${i + 1}按鈕_曝光`) } }
我希望得到的結果是整個循環出來只會輸出一條數據,某個按鈕曝光。但實際的輸出是這樣的
頁面去解鎖碎片1按鈕_曝光
頁面去解鎖碎片1按鈕_曝光
頁面去解鎖碎片1按鈕_曝光
頁面去解鎖碎片1按鈕_曝光
頁面去解鎖碎片1按鈕_曝光
這是因為for會去遍歷每一個i,因為後面的i都是0,所以都會被返回。
那要怎樣才可以讓它匹配到一個正確就不再往下執行了呢?
為此我嘗試了很多方法,最後才知道原來在if裏面是有return的,使用return,匹配到立即終止。
for (let i = 0; i <= res.chip_list.length; i++) { if (res.chip_list[i].task_status === 0) { console.log(`頁面去解鎖碎片${i + 1}按鈕_曝光`) return } }
這樣做在for循環內部輸出,似乎已經沒什麽問題了,但是如果我們在外面看一下呢
for (let i = 0; i <= res.chip_list.length; i++) {
if (res.chip_list[i].task_status === 0) {
console.log(`頁面去解鎖碎片${i + 1}按鈕_曝光`)
return
}
}
console.log(1234)//不會輸出
‘1234‘不會被輸出。這是因為for循環在js裏面並不是封閉的一塊它與外面是直接連通的所以它一旦return後面的代碼都不會再執行。
那怎麽辦呢?for循環裏除了有return還有brake和continue呀,brake同樣可以打斷,而且後面的代碼也是可以執行的喲~
for (let i = 0; i <= res.chip_list.length; i++) {
if (res.chip_list[i].task_status === 0) {
console.log(`頁面去解鎖碎片${i + 1}按鈕_曝光`)
brake
}
}
console.log(1234)//1234
我以前在開發的過程中重來沒有用過brake這些,這次的坑讓我警惕,並去看了一些其他關於for循環的知識。
我在知乎上看到一位大佬總結的很好,這裏分享給大家
https://zhuanlan.zhihu.com/p/23812134?utm_source=tuicool&utm_medium=referral
來談談基礎卻重要的for循環