函数柯里化实现

假设我们现在有一个方法add,参数需要a和b,目前只有参数a,那我们构想,能否先在a存起来 待b出现了我们再放b上去并执行方法?

   这是今天的业务场景描述 下面开始:

    // 材料函数

    function add(a,b) {
      return a+b
}

    //curry化的方法函数

    function curry(fn){
      var args = Array.prototype.slice.call(arguments,1); //arguments不是真正意义的数组 需要借用数组方法转换成数组

      return function(){
        var args2 = Array.prototype.slice.call(arguments);//这里的arguments指的是当前函数的作用的arguments 

         var argsList = args.concat(args2);


       return fn.apply(null, argsList);//这里没有指定函数指针 因此this默认指向全局window
  }
}

    var addFn =  curry(add, 1);//我们利用闭包时传入的函数和 argument,得以保存下来 现在我们传入 a值 并不知道 b值 

    //。。几千年后  我们终于得到b值 好了 结果要产生了 真兴奋

    addFn(2);

    //ok 我们终于得到我们想要的效果

    

    

原文地址:https://www.cnblogs.com/chaky/p/8179644.html