我正在完成一些JavaScript算法挑戰,我不得不因爲其中一個數字的一部分而對數字進行因式分解。在搜索堆棧和其他地方後,我輸入了一個正確的代碼塊:JavaScript - Factorialization'For Loop'瞭解?
function factorialize(num) {
if(num === 0) {
return 1;
}
if(num < 0) {
return undefined;
}
for(var i = num; --i;) {
num *= i;
}
return num;
}
factorialize(5);
它返回正確的結果。然而,我很難理解的是爲什麼for循環沒有第二個語句,爲什麼它可以永遠運行?我有一個暗示,因爲只要i
的值是0
,隨後生成的負數將乘以0,因此只有整數會形成結果。但是爲什麼函數返回一個有效的數字,如果循環仍然運行到-infinity並且在達到某個值時沒有被告知停止?
它沒有第三個語句...並且這是足夠有效的......第二個語句在我爲1時打斷循環(即--i將爲0)... for循環定義爲(for [initial]; [條件]; [final-expression])'...條件是什麼測試,看看循環是否應該繼續運行,只要它評估真相,循環繼續。在第一個循環之前運行初始化,在每個循環結束時運行終結 –