JavaScript Condition评估为false?

时间:2015-10-08 12:19:10

标签: javascript numbers

我目前正试图通过解决Project Euler任务来熟悉JavaScript。在下面的片段中,我试图得到所有甚至斐波那契数字低于4.000.000的总和。

var sum = 0;
var fibNums = [1, 2];
for (var i = 2; fibNums[i] < 4000000; i++) {
    fibNums[i] = fibNums[i - 1] + fibNums[i - 2];
    sum += fibNums[i] % 2 == 0 ? fibNums[i] : 0;
}
console.log(sum);

我的问题是即使在第一次运行时,fibNums[i] < 4000000的计算结果为false。那怎么样?

2 个答案:

答案 0 :(得分:4)

简而言之: (fibNums[i = 2] === undefined),而(undefined < 40000 === false)

长:

您使用for开始var i = 2循环,而fibNums数组仅包含2个元素且索引以0开头。因此,fibNums[2]将为undefined。在JavaScript undefined中,永远不会少于一个数字,因为当您将任何数字与undefined进行比较时,它始终为false

答案 1 :(得分:0)

&#13;
&#13;
var sum = 0;
var fibNums = [1, 2, 0];

for (var i = 2;fibNums[i] < 4000000; i++) {
    fibNums[i] = fibNums[i-1] + fibNums[i-2];
    sum += fibNums[i] % 2 == 0 ? fibNums[i] : 0;
    fibNums.push(fibNums[i]); 
}

alert(sum);
&#13;
&#13;
&#13;