You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中reduce函数不返回累加器就变为undefined的原因是什么?

reduce报错原因分析

核心原因是你忽略了reduce回调函数的返回值规则:

  • Array.prototype.reduce的回调函数每一轮执行后的返回值,会作为下一轮迭代时累加器acc的入参值。
  • JavaScript中如果函数没有显式书写return语句,会默认返回undefined。

第一次代码的执行流程:

你传入的空数组[]只作为第一轮迭代的acc初始值:

  1. 第一轮迭代:acc为[],匹配年龄条件后执行push操作,但是回调没有显式返回,默认返回undefined
  2. 第二轮迭代:acc拿到的是上一轮返回的undefined,此时尝试调用undefined.push就直接抛出了你遇到的类型错误。

调整后代码正常的原因:

你在回调末尾显式加了return acc,每一轮迭代都会把当前的累加器对象返回给下一轮使用,acc始终是你初始化的数组对象,不会变成undefined,因此可以正常执行push操作。

内容的提问来源于stack exchange,提问作者Sanket Shevkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 09:06:00