什么是柯里化
只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。
柯里化有什么作用
let add = function (x) {
return function (y) {
return x + y
}
}
let add1 = add(1)
let add2 = add(2)
console.log(add1(10)); // 11
console.log(add2(20)); // 22
这个例子表明柯里化是一种预加载函数能力
,通过传递一到两个参数,久能得到一个记住了这些参数的新函数。
实现柯里化函数
add(1)(2)(3) === add(1,2,3)
function curry(fn) {
return (...args) => {
if (args.length >= fn.length) {
return fn.apply(null, args);
} else {
return curry(fn.bind(null, ...args));
}
};
}
function sum(a, b, c) {
return a + b + c
}
let sum1 = curry(sum)
console.log(sum1(1, 2, 3)); // 6
console.log(sum1(1)(2)(3)); // 6