1
Amy 原创整理|资料核验:2026-11-02
MDN说明:数组没有元素且未提供initialValue时,reduce会抛出TypeError。常见触发点是前面先filter,某次条件把所有元素都过滤掉,后面的汇总才报错。
教学示例:对数值求和可写values.reduce((sum, value) => sum + value, 0)。values为空时结果为0;[4, 6]时结果为10。这里0是求和所选的初始值,不是所有归约任务都应机械填0。
Amy建议为汇总操作明确“没有数据时返回什么”:数值总和、最大值、拼接文本和构建对象可能需要不同处理。若空数据本来就是异常,应明确检查并报出业务原因,别随便塞一个初始值掩盖问题。
另外,只有一个元素且没有初始值时,reduce会直接返回该元素而不调用回调。需要统一转换数据类型的逻辑,也别默认回调总会执行。
官方来源:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce