函数柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。
const curry = (fn,...args) =>
args.length < fn.length
//参数长度不足时,重新柯里化该函数,等待接受新参数
? (...arguments) => curry(fn,...args,...arguments)
//参数长度满足时,执行函数
: fn(...args);
// const curry = function(fn,...args){
// console.log(args);
// if(args.length < fn.length){
// return function(...rest){
// return curry(fn,...args,...rest);
// }
// }
// return fn(...args);
// }
function sumFn(a,b,c){
return a + b + c;
}
const sum = curry(sumFn);
console.log( sum(2)(3)(5) );//10
console.log( sum(2,3,5) );//10
console.log( sum(2,3)(5) );//10
函数柯里化的主要作用:
- 参数复用
- 提前返回 – 返回接受余下的参数且返回结果的新函数
- 延迟执行 – 返回新函数,等待执行