面向初学者的freeCodeCamp JavaScript课程

面向初学者的freeCodeCamp JavaScript课程,javascript,Javascript,我正在学习这门关于JavaScript的免费课程,遇到了一行让我感到困惑的代码 const sum2 = (function(){ return function sum2 (...args){ return args.reduce((a,b) => a + b , 0) } })(); console.log(sum2(1,2,3,4,5)); //result 15, which comes from 1+2+3+4+5 我的问题涉及返回参数。r

我正在学习这门关于JavaScript的免费课程,遇到了一行让我感到困惑的代码

const sum2 = (function(){
    return function sum2 (...args){
        return args.reduce((a,b) => a + b , 0)  
    }
})();
console.log(sum2(1,2,3,4,5)); //result 15, which comes from 1+2+3+4+5 

我的问题涉及返回参数。reducea,b=>a+b,0行,我想知道a和b代表什么,它们如何使我的值求和?

我的朋友是一个箭头函数。相当于:

args.reducefunctiona,b{ 返回a+b } , 0
在本例中,a和b是一个累加器和传递的当前值。

让我们关注这一部分

1| function sum2 (...args){
2|     return args.reduce((a,b) => a + b , 0)  
3| }
首先,第2行的args是一个包含所有参数的数组

其次,reduce函数基本上接受数组中的所有值,并根据它们之间的某种关系返回单个值。 a表示当前值,b是数组中的下一个值。 在第一次迭代中,a是数组中的第一个值,b是数组中的第二个数字。 然后a成为第一个和第二个数字之间的关系,b是数组中的第三个数字,以此类推


这就是为什么会得到15个

它们只是任意的参数名。试着读一读《谢谢》,这会让事情变得清楚: