js函数式编程之代码组合(compose)

var compose = function(f,g) {
  return function(x) {
    return f(g(x));
  };
};

这就是函数组合(compose),f 和 g 都是函数, x是在它们至今通过“管道”传输的值。

用法1:

var toUpperCase = function(x) { return x.toUpperCase(); };
var exclaim = function(x) { return x + '!'; };
var shout = compose(exclaim, toUpperCase);

shout("send in the clowns");
// "SEND IN THE CLOWNS!"

我们可以实现一个通用版的compose

function compose(){
    var args=arguments;
    var start=args.length - 1;
    return function(){
        var result=args[start].apply(this,arguments);
        while(start){
           result= args[--start].call(this,result);
        }
        return result;
    }  
}

参考资料: JS 函数式编程指南

你可能感兴趣的:(函数式编程,js基础)