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