JavaScript - 分解 'For Loop' 理解?

标签 javascript for-loop

我正在完成一些 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/

相关文章:

javascript - 无法在对象(生成的应用程序 Controller )上找到属性 'link_to'。

scala - 根据参数双向循环 Scala

python - 在python列表中的每个项目的字符串前面添加一个字符串

javascript - 将 for in 循环更改为 for 循环

javascript - 调用 Jquery 自动完成 ajax 函数

JavaScript 函数参数 : positional -> map transition

ios - 如何在 Swift 的嵌套 for 循环中访问父索引?

java - 三角形的嵌套 for 循环

javascript - MEAN 堆栈中的哪个模块收集 mongodb 依赖项?

javascript - 是否可以访问 VoiceXML 文档的 DOM?如何?