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

如何避免第二个console.log计算时累加第一个数组的求和结果?

数组求和函数重复调用结果累加异常的解决方法

问题原因

你定义的sum变量属于全局作用域,第一次调用getAverage后,sum的值会保留为717。第二次调用函数时,会在这个已有值的基础上继续累加新数组的元素,最终得到717+854=1571,和预期结果不符。

解决方案

方案1:将sum改为函数内部局部变量(推荐)

把sum的定义移到函数内部,每次调用函数时都会重新初始化sum为0,彻底规避全局变量带来的副作用:

function getAverage(scores) {
  let sum = 0;
  for (let i = 0; i < scores.length; i++) {
    sum += scores[i];
  }
  return sum;
}

console.log(getAverage([92, 88, 12, 77, 57, 100, 67, 38, 97, 89])); // 输出717
console.log(getAverage([45, 87, 98, 100, 86, 94, 67, 88, 94, 95])); // 输出854

方案2:手动重置全局sum(不推荐)

如果必须保留全局变量,可以在每次调用函数前将sum重置为0,但这种方式会保留全局变量带来的潜在风险:

let sum = 0;

function getAverage(scores) {
  sum = 0; // 调用前重置sum
  for (let i = 0; i < scores.length; i++) {
    sum += scores[i];
  }
  return sum;
}

方案3:使用数组reduce方法简化代码

利用JavaScript数组的reduce方法可以更简洁地实现求和,同时避免额外变量的问题:

function getAverage(scores) {
  return scores.reduce((total, current) => total + current, 0);
}

内容的提问来源于stack exchange,提问作者Issac Alleyne

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 19:37:09