JavaScript中reduce返回undefined问题排查:累加器正常但输出异常
问题分析与解决方案
嘿,我一眼就发现你的代码里的关键问题了!
核心问题:函数未返回reduce的计算结果
你写的total函数里,reduce的累加逻辑本身是没问题的,但你没有把reduce的执行结果从total函数里返回出去!JavaScript里如果函数没有显式写return语句,默认会返回undefined,这就是最后console.log(s)输出undefined的根本原因。
另外还有个小细节:如果传入空数组,当前的reduce写法会直接抛出错误,建议给reduce加上初始值0,让代码更健壮。
修正后的代码
function total(arr) { // 1. 新增return,把reduce的计算结果返回出去 // 2. 给reduce加上初始值0,兼容空数组场景 return arr.reduce(function(acc, cur){ console.log(acc); console.log(cur); return acc + cur; }, 0); } let s = total([1,2,3]); console.log(s); // 现在会正确输出6
效果验证
运行修正后的代码,控制台会输出:
0 1 1 2 3 3 6
前两行是第一次回调的acc(初始值0)和cur(1),后续依次完成累加,最终total函数返回累加结果6,赋值给s后就能正常打印了。
内容的提问来源于stack exchange,提问作者giovita0206
相关产品推荐
相关产品推荐

