JS函数组合

组合原理(逐个执行):

// compose(f,g)(x) === f(g(x))
// compose(f,g,m)(x) === f(g(m(x))
// compose(f,g,m)(x) === f(g(m(x))
// compose(f,g,m,n)(x) === f(g(m(n(x))

组合实现(执行方向右到左):

function compose(...fns){
    return function(x){
        return fns.reduceRight(function(arg,fn){
            return fn(arg);
        },x)
    }
}

组合管道(执行方向左到右):

function pipe(...fns){
    return function(x){
        return fns.reduce(function(arg,fn){
            return fn(arg);
        },x)
    }
}

你可能感兴趣的:(JS函数组合)