前端/移动开发面试题更新 2026-08-05

请用 JavaScript 的 reduce 方法完成数组求和,并给出可运行的代码示例。

前端/移动开发编码实现技术原理JavaScript

考察说明

考察对 Array.prototype.reduce 用法及回调参数的理解。

回答思路

  1. 【回答框架 1】reduce 接收一个回调函数和一个初始值,回调有四个参数,分别代表累加器、当前值、当前索引和原数组,这里求和只需要前两个。
  2. 【回答框架 2】求和时初始值设为 0,回调返回累加器加当前值,最终 reduce 返回累加结果,例如 [1,2,3].reduce((acc,cur)=>acc+cur,0) 得到 6。
  3. 【回答框架 3】如果不提供初始值,第一次调用会使用数组第一个元素作为累加器,从第二个元素开始遍历,空数组时直接报错,因此最好显式传入初始值 0。
  4. 【回答框架 4】代码可以写成 const sum = arr.reduce((acc, cur) => acc + cur, 0); 注意回调中箭头函数省略了 return,若用普通函数则需要写 return acc + cur;。
  5. 【回答框架 5】在实际项目中可以结合初始值避免类型问题,比如处理数字数组时确保每一项都是数值,否则可能得到字符串拼接结果。
  6. 【关键点 1】reduce 的累加器与当前值参与求和,初始值须显式设为 0。
  7. 【关键点 2】不传初始值时,空数组会抛 TypeError,建议总是提供初始值。
  8. 【关键点 3】返回值是累加器最终值,不改变原数组。
  9. 【易错点 1】使用回调时若漏写 return 或初始值,会导致结果错误或类型异常。
  10. 【易错点 2】用 reduce 直接求和时,数组元素必须为数值,否则会出现字符串拼接或 NaN。
  11. 【易错点 3】不要将 reduce 用于未初始化的稀疏数组,可能跳过空槽,结果不符合预期。