我正在完成一些 JavaScript 算法挑战,我不得不对一个数字进行因式分解,作为其中的一部分。在搜索堆栈和其他地方后,我输入了正确的代码块:
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 并且没有被告知在达到某个值时停止,为什么函数会返回一个有效数字?
最佳答案
for
循环的第二部分是条件:
An expression to be evaluated before each loop iteration. If this expression evaluates to true, statement is executed. This conditional test is optional. If omitted, the condition always evaluates to true. If the expression evaluates to false, execution skips to the first expression following the for construct.
一旦 --i
达到 0,它的计算结果为 false
(falsey) 并且 for
“退出"
将 console.log(i)
添加到您的 for 循环将有助于证明这一点
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for
关于JavaScript - 分解 'For Loop' 理解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38740838/