组合式函数编程

该文章由 leevare 发布于 ,归类于 Javascript

所谓组合式函数编程,是为了解决多层函数嵌套求值的问题,这种类似于“包菜式”的函数调用可以看如下示例:

var val = fn4(fn3(fn2(fn1(value))));

为了获得一个值,需要多层函数处理,这种实现方式看起来很不直观,而且也不利于维护,为此,可以使用函数组合的方式来实现同样的功能。

const compose = (...fns) =>
  fns.reverse().reduce((prevFn, nextFn) =>
    value => nextFn(prevFn(value)),
    value => value
  );

或者这样写更加好理解一些

const compose = (...fns) => (value => (fns.reverse().reduce((prevFn, fn) => fn(prevFn(value)))));

上述的函数就可该写为:

var val = compose(fn4, fn3, fn2, fn1)(value);

这样给阅读与维护都带来了巨大的便利性。

例如,需要将一个字符串所有字符转为大写,然后再根据空格拆分为一个数组,可以使用这种方式来实现效果。

const toUpperCase = word => word.toUpperCase();
const split = x => (str => str.split(x));

console.log(compose(split(' '), toUpperCase)('asdad adzxc 1s')); //[ 'ASDAD', 'ADZXC', '1S' ]

如果觉得我的文章对您有用,请您随意打赏。您的支持将鼓励我更加努力创作!

相关文章:

说点什么

avatar
300
  Subscribe  
提醒