JavaScript中如何在函数内正确使用变量实现数组求和?
数组元素求和的正确实现方式
先拆解你两次尝试的问题:
- 第一次代码:函数
solution没有返回值,所以console.log输出undefined;同时全局变量newArr的使用不符合函数封装逻辑,即便修改了全局变量,外部也需要单独访问它才能拿到结果,这不是合理的函数设计。 - 第二次代码:把
newArr声明在循环内部,每次循环都会重新创建变量并赋值为0,相当于每次只累加当前循环的单个元素,循环结束后变量被销毁,根本存不住累加的总和。
正确实现方法
方法1:规范的for循环写法
将求和变量声明在函数内部,循环完成后返回这个变量:
function solution(arr) { let sum = 0; // 变量声明在函数内,避免全局污染 for (let i = 0; i < arr.length; i++) { sum += arr[i]; } return sum; // 必须返回求和结果,外部才能获取 } console.log(solution([1,2,3,4])) // 输出 10
方法2:使用数组reduce方法(更简洁)
JavaScript数组内置的reduce方法专门用于处理累加、聚合类逻辑,写法更紧凑:
function solution(arr) { return arr.reduce((total, current) => total + current, 0); } console.log(solution([1,2,3,4])) // 输出 10
reduce参数说明:第一个参数是回调函数,total代表当前累加的总和,current是当前遍历到的数组元素;第二个参数0是总和的初始值,确保空数组时返回0而非undefined。
内容的提问来源于stack exchange,提问作者Josh Yeom
相关产品推荐
相关产品推荐

