zoukankan      html  css  js  c++  java
  • 函数柯里化实现

    假设我们现在有一个方法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 我们终于得到我们想要的效果

        

        

  • 相关阅读:
    block: cfq 学习01
    SAS,SATA普及文档
    如何查看盘的类型
    [转载] Linux Futex的设计与实现
    C++ std::map的安全遍历并删除元素的方法
    我的vimrc配置
    .vimrc
    RC: blkio throttle 测试
    LTTng
    基于ADL5317的雪崩光电二极管(APD)偏压控制/光功率监测电路的设计
  • 原文地址:https://www.cnblogs.com/chaky/p/8179644.html
Copyright © 2011-2022 走看看