利用展开运算符写函数柯里化
function cal(a,b,c,d){
return a + b * c - d;
}
// 利用展开运算符写柯里化
function curry(func,...args){
return function (...subArgs){
const allArgs = [...args,...subArgs];
if(allArgs.length >= func.length){
// 参数够了
return func(...allArgs);
}else{
// 参数不够,继续固定
return curry(func,...allArgus);
}
}
}
const newCal = curry(cal,1,2);
console.log(newCal(3,4));
console.log(newCal(3,8));
console.log(newCal(5,4));
// curry:柯里化:用户固定某个函数的前面的参数,
// 得到一个新的函数,新的函数调用时,接收剩余参数