函数柯里化实现

假设我们现在有一个方法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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值