函数组合
概括来说,就是接收若干个函数作为参数,返回一个新函数。新函数执行时,按照由右向左的顺序依次执行传入compose中的函数,每个函数的执行结果作为下一个函数的输入,直至最后一个函数的输出作为最终的输出结果。
组合
function compose(...fns){ return function(rest){ return fns.reduceRight(function(arg,fn){ return fn(arg) },rest) } }
管道 -> 与组合方向相反
const pipeline = (fns) => { return (args) => { return fns.reduce((total, current) => { return current(total); }, args); } }
示例代码
function x(str){ return str.toUpperCase() } function y(str){ return str.split('') } function z(arr){ return arr.join('-') } let fn = pipeline(x,y,z) fn('zjy') //"Z-J-Y"
以自己现在的努力程度,还没有资格和别人拼天赋