把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术
// 手写柯里化
const add = function (a, b, c) {
return a + b + c;
};
function curry(fn) {
return function curryFun(...args) {
if (args.length < fn.length) {
return function () {
return curryFun([...args, ...arguments]);
};
}
return fn(...args);
};
}
const curried = curry(add);
const a = curried(1)(9)(3);
const b = curried(2, 8)(6);
console.log({ a, b });