Skip to content

实现 compose

题目描述

实现函数compose,compose接受多个函数作为参数,并返回一个新的函数,新的函数会从右向左依次执行原函数, 并且上一次结果的返回值将会作为下一个函数的参数。

因此compose函数有一个限制,就是被compose的函数是单元的,即只有一个参数,如果不这样的话,就只能返回数组了。 因为在JS中参数其实就是一个类数组。

代码

js
function compose(...fns) {
  return (...args) => fns.reduceRight((acc, cur) => cur(acc), ...args);
}

function a(msg) {
  return msg + "a";
}
function b(msg) {
  return msg + "b";
}
function c(msg) {
  return msg + "c";
}

const f = compose(
  a,
  b,
  c
);
console.log(f("hello"));
function compose(...fns) {
  return (...args) => fns.reduceRight((acc, cur) => cur(acc), ...args);
}

function a(msg) {
  return msg + "a";
}
function b(msg) {
  return msg + "b";
}
function c(msg) {
  return msg + "c";
}

const f = compose(
  a,
  b,
  c
);
console.log(f("hello"));