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

为何函数内循环拼接仅输出'ca'而非预期的'cabc'?

为什么你的代码只输出'ca'而不是'cabc'?

核心问题出在getsum函数的return语句位置——你把return写在了for循环内部,导致函数第一次循环迭代就直接终止了。

具体原因:

当调用getsum(amd, arr)时,初始acc的值是'c':

  1. 循环开始,i=0,执行acc = acc + arr[i],此时acc变成'c'+'a'='ca';
  2. 紧接着执行return语句,函数立刻结束执行,后续i=1(对应arr[1]='b')和i=2(对应arr[2]='c')的循环步骤完全没机会运行。
    这就是为什么最终控制台只输出'ca'。

另外还有个小问题:循环里的i没有用let/const声明,会变成全局变量,可能引发意外问题,建议补上声明。

修复方案:

把return语句移到for循环外面,让循环完成所有元素的累加后再返回结果:

let amd = 'c';
const arr = ['a', 'b', 'c'];

function getsum(acc, arr) {
    for (let i = 0; i < arr.length; i++) {
        acc = acc + arr[i]; // 仅累加,不提前返回
    }
    return acc; // 循环结束后返回最终结果
}
console.log(getsum(amd, arr)); // 输出 'cabc'

如果想更简洁,也可以用JavaScript数组的reduce方法(专门用于累加类操作):

let amd = 'c';
const arr = ['a', 'b', 'c'];

const result = arr.reduce((acc, item) => acc + item, amd);
console.log(result); // 输出 'cabc'

内容的提问来源于stack exchange,提问作者MARCUS ANTENOR

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:03:14