箭头函数可以包含宿主函数的多个参数,例如reduce吗?

时间:2016-02-13 13:43:16

标签: javascript ecmascript-6

我认为这个问题的答案是否定的,但我不确定。下面是一个reduce函数,一个不使用箭头函数,一个是。是否可以将第一个参数合并到箭头样式中?

var s = arr.reduce(function(){

},0) // includes second argument

和........

var a = arr.reduce = () => {

} // ?

3 个答案:

答案 0 :(得分:6)

是的,Arrow functions可以使用多个参数,只需要在括号内添加。

var s = arr.reduce((accum, currVal) => accum + currVal, 0);
                   ^              ^                       : Multiple arguments to the Arrow function
                                                       ^^^: Second argument of the `reduce` function

这里,Array#reduce的第二个参数可以正常传递。箭头函数(第一个参数)对第二个参数的传递方式没有影响。

答案 1 :(得分:4)

此代码的一部分:

var s = arr.reduce(function(){

},0) // includes second argument

...箭头函数将替换纯粹是这一点:

function() {
}

E.g:

var s = arr.reduce(/*The function
goes
here*/,0) // includes second argument

0与传递的函数无关,它是reduce的第二个参数。

所以第一个块的等价物是:

var s = arr.reduce(() => {

}, 0) // includes second argument

虽然当然,如果您使用reduce,在两个代码块中您都会想要一些参数:

var s = arr.reduce(function(result, current) {
    return /*...something combining `result` with `current`...*/;
}, 0);

所以:

var s = arr.reduce((result, current) => {
    return /*...something combining `result` with `current`...*/;
}, 0);

或者:

var s = arr.reduce((result, current) => /*...something combining `result` with `current`...*/, 0)

答案 2 :(得分:2)

您必须像往常一样调用主机功能,并且可以像往常一样提供多个参数。只需用箭头函数替换函数表达式。

var s = arr.reduce(() => {
   …
}, 0);

您的第二个代码段覆盖(分配给)arr.reduce,而不是调用它。