首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >累加器在Javascript的reduce函数中返回NaN

累加器在Javascript的reduce函数中返回NaN
EN

Stack Overflow用户
提问于 2018-06-12 08:30:21
回答 1查看 586关注 0票数 0

我正在学习使用扩展操作符...来编写一个函数,该函数接受传递给函数的所有参数,并返回偶数参数的和。我的问题是,除了reduce()的第一个回调之外,为什么我的acc等于NaN?

代码和执行的打印输出如下,console.log(...)是我插入的调试代码。谢谢你的帮助。

代码语言:javascript
复制
function sumEvenArgs(...args){
      var sum = args.reduce( (acc, next) => {
        console.log("\nnext:", next);
        if (next % 2 === 0) {
          acc += next;
          console.log("in if - acc:", acc);
        } else {
          acc += 0;
          console.log("in else - acc:", acc);
        }
      }, 0);

      return sum;
    }
    var sum = sumEven(1,2,3,4) // 6
    console.log("sum:", sum);

输出

代码语言:javascript
复制
next: 1
in else - acc: 0

next: 2
in if - acc: NaN

next: 3
in else - acc: NaN

next: 4
in if - acc: NaN
sum: undefined
EN

回答 1

Stack Overflow用户

发布于 2018-06-12 08:39:16

您应该在回调函数的末尾返回acc

代码语言:javascript
复制
function sumEvenArgs(...args){
    var sum = args.reduce( (acc, next) => {
        console.log("\nnext:", next);
        if (next % 2 === 0) {
            acc += next;
            console.log("in if - acc:", acc);
        } else {
            acc += 0;
            console.log("in else - acc:", acc);
        }
        return acc ; // you need to add this line 
    }, 0);

    return sum;
}
var sum = sumEvenArgs(1,2,3,4) // 6
console.log("sum:", sum);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50807742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档