function sumArray(numbers){
var sum;
for(var i in numbers){
sum += numbers[i];
}
return sum;
}
console.log(sumArray([1,2,3,4,5]));
Hi all,
结果是NaN。但是,如果我用sum = 0,结果是15。为什么JS不识别数组中的值类型并帮我初始化?为什么会返回NaN在第一种情况下?
Thanks
当变量在当前作用域内声明时,它会被初始化为undefined
value.
var sum; // is initialized with undefined
In the for
循环,加法sum += numbers[i]
实际上正在做一个undefined + 1
手术。由于两个操作数都不是字符串类型,因此它们都转换为数字:
-
undefined
+ 1
-
NaN
+ 1
NaN
请查看这篇文章以获取更多信息加法运算符(示例 7)。
当然,要解决这个问题只需将其初始化为0即可:
var sum = 0;
另外我会把这些项目总结得更简单:
var sum = [1,2,3,4,5].reduce(function(sum, item) {
return sum + item;
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)