手写compose

es5实现

const compose = function (func) {
  let len = func.length;
  let count = len - 1;
  let result;
  return function f1(...arg1) {
    result = func[count].apply(this, arg1);
    if (count <= 0) {
      count = len - 1;
      return result;
    }
    count--;
    return f1.call(null, result);
  };
};
复制代码

redux实现

const reduxCompose = (func) => {
  const len = func.length;
  if (len === 0) {
    return (arg) => arg;
  }
  if (len === 1) {
    return func[0];
  }
  return func.reduce((a, b) => (...args) => a(b(...args)));
};
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享