我有代码使用currying来获得数组的平均值,这是由连接两个数组产生的:n大小数组和m大小数组。如何使用适用于咖喱?
var avg = function(...n){
let tot=0;
for(let i=0; i<n.length; i++){
tot += n[i];
}
return tot/n.length;
};
var spiceUp = function(fn, ...n){
return function(...m){
return fn.apply(this, n.concat(m));
}
};
var doAvg = spiceUp(avg, 1,2,3);
console.log(doAvg(4,5,6));
在这一行return fn.apply(this, n.concat(m));
,我不明白为什么我们需要使用apply
。我们与平均函数绑定的对象是什么,为什么只是正常调用(return fn(n.concat(m));
)不起作用?
只用'return fn(n.concat(m));' – madox2