JavaScript 条件评估结果为 false?

标签 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。这是怎么来的?

最佳答案

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

更长:

您开始您的for循环 var i = 2 ,而fibNums数组仅包含 2 个元素,索引以 0 开头。因此,fibNums[2]将是undefined 。在 JavaScript 中 undefined永远不会小于一个数字,就像将任何数字与 undefined 进行比较时一样它将永远是false .

关于JavaScript 条件评估结果为 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33015599/

相关文章:

javascript - JavaScript 中的时间验证

java - 想在java中格式化大于20位的数字吗?

javascript - 检查数字内数字范围且不重复的最有效方法

sql - 如何在sqlite中使用 float ?

javascript - jquery 数字格式到紧凑数字样式 k 千 m 百万等

javascript - 将谷歌图表保存到图像中并在新选项卡中打开它们

javascript - 如何在循环中更改进度条?

.net - 是否有用于将大数字格式化为文本的 .NET 库?

javascript - 如何在 Nightmare.js 中处理 JSON 响应

javascript - Asp.net jQuery 验证引擎提交问题