Skip to main content

函数相关

Compose 函数

什么是 compose,比如有以下任务:

let tasks = [step1, step2, step3, step4];

依次执行每个 step 函数,这就是一个 compose compose 在函数式编程中是一个很重要的工具函数,在这里实现的 compose 有三点说明

  • 第一个函数是多元的(接受多个参数),后面的函数都是单元的(接受一个参数)
  • 执行顺序是自右向左的
  • 所有函数的执行都是同步的

代码类似于下面:

step1(step2(step3(step4(1))));

实现下面代码中的 compose 函数

function fn1(x) {
return x + 1;
}
function fn2(x) {
return x + 2;
}
function fn3(x) {
return x + 3;
}
const a = compose(fn1, fn2, fn3);
a(1);
function compose(...fn) {
if (!fn.length) return;
if (fn.length === 1) return fn[0];
return fn.reduce(
(pre, cur) =>
(...args) =>
pre(cur(...args))
);
}