Compose
Compose 是一种函数组合的方法,它将多个函数组合成一个新的函数。这个新函数会从右到左依次执行被组合的函数。
将管道一样的函数串起来,通过一个函数执行。
例1:
const add1 = (x) => x + 1;
const mul3 = (x) => x * 3;
const div2 = (x) => x / 2;
div2(mul3(add1(add1(0)))); //=>3
使用compose:
const composeFn = componse(add1, mul3, div2);
compose(0)
相当于 add1(mul3(div2(0)))
顺序是从后往前执行。
柯里化
柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。
// 未柯里化的函数
function add(x, y) {
return x + y;
}
// 柯里化后的函数
function curriedAdd(x) {
return function(y) {
return x + y;
}
}
// 使用
console.log(add(2, 3)); // 输出: 5
console.log(curriedAdd(2)(3)); // 输出: 5
- 优点: a. 参数复用:可以固定某些参数,创建一个新的函数。 b. 提高适用性:使函数更加灵活。 c. 延迟执行:柯里化的函数执行是延迟的,可以在合适的时候调用。 d. 动态创建函数:可以根据不同的场景创建不同的函数。
Compose 和柯里化的关系
a. 互补性:
- Compose 用于组合函数。
- 柯里化用于分解函数参数。 这两种技术经常一起使用,以创建更灵活和可重用的代码。
b. 函数式编程: 两者都是函数式编程中的重要概念,用于创建更小、更纯粹的函数。
c. 提高可组合性: 柯里化可以使函数更容易被 compose。因为柯里化后的函数每次只接受一个参数,这使得它们更容易被组合。