JavaScript中对数字数组求和得到NaN结果的原因是什么?
问题根因
- 循环判断条件逻辑错误:JavaScript数组下标从
0开始计数,你声明的numarr长度为3,合法下标只有0、1、2 - 你使用的
i <= len条件会让i最终取到等于len的3,此时访问numarr[3]返回undefined - 数值和
undefined执行加法运算时,undefined会被隐式转换为NaN,最终累加结果就变为NaN
修复方法
方案1:修改循环条件
将循环判断条件从i <= len调整为i < len即可正常运行,修改后代码如下:
let numarr = [5598, 4589 ,25465164] let len = numarr.length; let i, numval = 0; for(i=0; i < len; i++) { numval += numarr[i]; } document.getElementById("demo").innerHTML = numval;
方案2:使用数组内置方法简化
可以直接用Array.reduce()方法实现求和,代码更简洁不易出错:
const numarr = [5598, 4589 ,25465164] const numval = numarr.reduce((sum, current) => sum + current, 0) document.getElementById("demo").innerHTML = numval;
内容的提问来源于stack exchange,提问作者rohan saka
相关产品推荐
相关产品推荐

