我假设这个问题的答案是否定的,但我不确定。下面是一个reduce函数,一个不使用箭头函数,一个是。是否可以将第一个参数的第二个参数合并到箭头样式中?
var s = arr.reduce(function(){
},0) // includes second argument
和。。。。。。。。
var a = arr.reduce = () => {
} // ?
是的,箭头函数可以使用多个参数,它们只需要添加到括号内即可。
var s = arr.reduce((accum, currVal) => accum + currVal, 0);
^ ^ : Multiple arguments to the Arrow function
^^^: Second argument of the `reduce` function
在这里,第二个参数可以正常传递给Array#reduce
。箭头函数(第一个参数(对第二个参数的传递方式没有影响。
此代码的部分:
var s = arr.reduce(function(){
},0) // includes second argument
。箭头函数将替换的纯粹是以下位:
function() {
}
例如:
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)
您必须像往常一样调用主机函数,并且可以像往常一样提供多个参数。只需将函数表达式替换为箭头函数即可。
var s = arr.reduce(() => {
…
}, 0);
您的第二个代码段确实覆盖(分配给(arr.reduce
,而不是调用它。