请实现函数柯里化:
举例:add函数,可以实现
add(1,2) //3
add(2,3)(4) //9
add(1,2)(3)(4)(5) //15
对于普通的curry模板来说,函数柯里化其实就是将参数收集起来,之后一起做处理。
//如果不使用rest参数,也可以使用[].slice.call(arguments)收集传进来的参数
function add(...value) {
var args = value;
function func(...value) {
args.push(...value);
return func;
}
func.toString = function() {
return args.reduce((a, b) => a + b);
}
return func;
}
add(1,2)(3)(4);
当最后不再使用括号调用函数的时候,由于返回了函数,所以隐式调用函数的toString方法,这里重写了toString方法,用于处理接收到的所有的参数。