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]);
- 程式開始
- 執行第 2 行,宣告一個名稱為 isVaild 的 function() {...}
- 執行第 12 行,將 [3, 5, 8, 13, 22, 35] 傳入並執行 isVaild
- 執行第 3 行,執行迴圈,宣告一個 i 的變數並給予初始值為 0,i 值 0 小於陣列長度 6,執行下列區塊內程式,每次迴圈結束 i 值+ 1
- 執行第 4 行,arr[0] 取得 3,3 <= 0,回傳 false,不執行區塊內程式,i 值 (0 + 1 = 1)
- 執行第 3 行,執行迴圈,i 值 1 小於陣列長度 6,執行下列區塊內程式
- 執行第 4 行,arr[1] 取得 5,5 <= 0,回傳 false,不執行區塊內程式,i 值 (1 + 1 = 2)
- 執行第 3 行,執行迴圈,i 值 2 小於陣列長度 6,執行下列區塊內程式
- 執行第 4 行,arr[2] 取得 8,8 <= 0,回傳 false,不執行區塊內程式,i 值 (2 + 1 = 3)
- 執行第 3 行,執行迴圈,i 值 3 小於陣列長度 6,執行下列區塊內程式
- 執行第 4 行,arr[3] 取得 13,13 <= 0,回傳 false,不執行區塊內程式,i 值 (3 + 1 = 4)
- 執行第 3 行,執行迴圈,i 值 4 小於陣列長度 6,執行下列區塊內程式
- 執行第 4 行,arr[4] 取得 22,22 <= 0,回傳 false,不執行區塊內程式,i 值 (4 + 1 = 5)
- 執行第 3 行,執行迴圈,i 值 5 小於陣列長度 6,執行下列區塊內程式
- 執行第 4 行,arr[5] 取得 35,35 <= 0,回傳 false,不執行區塊內程式,i 值 (5 + 1 = 6)
- 執行第 3 行,執行迴圈,i 值 6 小於陣列長度 6 不成立,不執行下列區塊內程式,跳出迴圈
- 執行第 6 行,執行迴圈,宣告一個 i 的變數並給予初始值為 2,i 值 2 小於陣列長度 6,執行下列區塊內程式,每次迴圈結束 i 值+ 1
- 執行第 7 行,arr[2] 取得 8,arr[1] 取得 5,arr[0] 取得 3,8 !== 5 + 3 回傳 false,不執行區塊內程式,i 值 (2 + 1 = 3)
- 執行第 6 行,執行迴圈,i 值 3 小於陣列長度 6,執行下列區塊內程
- 執行第 7 行,arr[3] 取得 13,arr[2] 取得 8,arr[1] 取得 8,13 !== 8 + 5 回傳 false,不執行區塊內程式,i 值 (3 + 1 = 4)
- 執行第 6 行,執行迴圈,i 值 4 小於陣列長度 6,執行下列區塊內程
- 執行第 7 行,arr[4] 取得 22,arr[3] 取得 13,arr[2] 取得 8,22 !== 13 + 8 回傳 true,離開函式,並回傳字串 'invalid'
- 程式結束