(一)柯里化 (Curry)
1、概念
柯里化把接受多个参数的函数变换成接受一个单一参数的函数,并且返回接收剩余的参数柯里化,帮助我们将任意多元函数变成一元函数的处理。柯里化实现的意义能:代码能够更好地复用,这是对函数参数的一种缓存,让函数更灵活,颗粒度更小,便于函数组合产生最大的功能
2、实现
function curry(func) {
return function curriedFn(...args) {
if (args.length < func.length) {
//如果实际参数的个数小于形参个数,我们要返回一个新的函数
return function () {
return curried(...args.concat(Array.from(arguments)));
};
}
//实际参数大于等于形参个数
return func(...args);
};
}
function getSum(a, b, c) {
return a + b + c;
}
const curried = curry(getSum);
console.log(curried(1, 2, 4));
console.log(curried(1)(2, 3));
console.log(curried(1)(2)(3));
(二)组合函数 (Compose)
1、概念:
函数组合,若一个函数要经过多个函数处理才能够得到最终值,这个时候可以把中间过程的函数合并成一个函数,函数就像数据的管道,函数组合就是把这些管道连接起来,让数据穿过多个管道,形成最终结果。函数组合默认执行顺序是从右往左直行的
2、实现:
**
(三)柯里化和组合( Curry + Compose)
**