迴圈 for loop
在 JavaScript 裡面有幾種讓程式碼不斷重複執行的方式,其中一種就是 for loop 迴圈。
基本語法:
基本使用#
上述範例會依序輸出 0 到 2,執行流程是這樣的:
- 先做「一開始要做的事」,就是
let i=0 - 再判斷「迴圈繼續執行的條件」是否符合,條件為 i<=3,符合
- 執行迴圈內容:console.log(i),印出 0
- 執行「每圈結束以後要做的事」,i++,i 變成 1
- 判斷「迴圈繼續執行的條件」是否符合,條件為 i<=3,符合
- 執行迴圈內容:console.log(i),印出 1
- 執行「每圈結束以後要做的事」,i++,i 變成 2
- 判斷「迴圈繼續執行的條件」是否符合,條件為 i<=3,符合
- 執行迴圈內容:console.log(i),印出 2
- 執行「每圈結束以後要做的事」,i++,i 變成 3
- 判斷「迴圈繼續執行的條件」是否符合,條件為 i<=2,不符合
- 迴圈終止
常見錯誤#
執行順序搞混#
宣告初始值時如果用 let,那這變數的 scope 就是 for loop 這個區塊當中,有些人會使用 var:
因為 var 的 scope 是 function,所以 i 在迴圈結束之後依然存在。
在迴圈結束之後印出 i,有些人會以為是 2,但上述範例中其實會是 3,因為當 i=3 時判斷式 i<=2 是 false,所以才跳出迴圈的。要記得迴圈的最後一步是 i++,所以是 i 先等於 3,然後才判斷 i<=2 的。
寫出無窮迴圈#
如果要把迴圈倒著跑,有些人會忘記把 i++ 改成 i--:
這樣就會造成無窮迴圈,因為 i 會一直遞增,所以 i>0 永遠都是 true,迴圈永遠不會結束。
範圍搞不清楚#
繼續執行的條件有些人會寫成:i<n,有些人會寫:i<=n,對新手來說可能沒辦法第一時間判斷出最後的值會是多少:
只要找最後一個符合執行條件的 i 就行了,例如說 i<10,如果 i 是 10 的話不符合,是 9 才符合,所以迴圈的最後一圈 i 就會是 9,執行完畢以後 i 會是 10。
i<=10 同理,最後一圈 i 會是 10,跑完之後 i 會是 11,然後跳出迴圈。