function isValid(arr) {
for(var i=0; i<arr.length; i++) {
if (arr[i] <= 0) return 'invalid'
}
for(var i=2; i<arr.length; i++) {
if (arr[i] !== arr[i-1] + arr[i-2]) return 'invalid'
}
return 'valid'
}
isValid([3, 5, 8, 13, 22, 35])
- 執行第 1 行名稱叫 isValid 的 function,帶入 arr 值。
- 執行第 2 行,開始迴圈第一圈,設定 i 是 0,判斷 i < arr 的長度(6), 是,繼續執行,進入第一圈迴圈。
- 執行第 3 行,判斷 arr[0] 的值是否小於等於 0 ,不是
- 第一圈迴圈結束,跑回第 2 行, i++ 變成 1 ,檢查 i 是否小於 arr 的長度 (6) ,是,繼續執行,進入第二圈迴圈。
- 執行第 3 行,判斷 arr[1] 的值是否小於等於 0 ,不是
- 第二圈迴圈結束,跑回第 2 行, i++ 變成 2 ,檢查 i 是否小於 arr 的長度 (6) ,是,繼續執行,進入第三圈迴圈。
- 執行第 3 行,判斷 arr[2] 的值是否小於等於 0 ,不是
- 第三圈迴圈結束,跑回第 2 行, i++ 變成 3 ,檢查 i 是否小於 arr 的長度 (6) ,是,繼續執行,進入第四圈迴圈。
- 執行第 3 行,判斷 arr[3] 的值是否小於等於 0 ,不是
- 第四圈迴圈結束,跑回第 2 行, i++ 變成 4 ,檢查 i 是否小於 arr 的長度 (6) ,是,繼續執行,進入第五圈迴圈。
- 執行第 3 行,判斷 arr[4] 的值是否小於等於 0 ,不是
- 第五圈迴圈結束,跑回第 2 行, i++ 變成 5 ,檢查 i 是否小於 arr 的長度 (6) ,是,繼續執行,進入第六圈迴圈。
- 執行第 3 行,判斷 arr[5] 的值是否小於等於 0 ,不是
- 第六圈迴圈結束,跑回第 2 行, i++ 變成 6 ,檢查 i 是否小於 arr 的長度 (6) ,否,結束迴圈,往下執行。
- 執行第 5 行,開始迴圈第一圈,設定 i 是 2 ,判斷 i < arr 的長度(6), 是,繼續執行,進入第一圈迴圈。
- 執行第 6 行,判斷 arr[2] 不等於 arr[2-1=1] + arr[2-2=0] ,不是
- 第一圈迴圈結束,跑回第 5 行, i++ 變成 3 ,檢查 i 是否小於 arr 的長度 (6) ,是,繼續執行。
- 執行第 6 行,判斷 arr[3] 不等於 arr[3-1=2] + arr[3-2=1] ,不是
- 第二圈迴圈結束,跑回第 5 行, i++ 變成 4 ,檢查 i 是否小於 arr 的長度 (6) ,是,繼續執行。
- 執行第 6 行,判斷 arr[4] 不等於 arr[4-1=3] + arr[4-2=2] ,是,回傳 invalid ,結束執行。
- 執行完畢。