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 我们终于得到我们想要的效果

        

        

  • 相关阅读:
    day06 tar命令使用,vim简单操作以及linux开机过程
    day05 创建用户过程、文件夹,文件等权限修改等
    简单算法
    day04
    day03
    Vim常用快捷键
    day02
    ssh注解开发
    spring07 JDBC
    spring06Aop
  • 原文地址:https://www.cnblogs.com/chaky/p/8179644.html
Copyright © 2011-2022 走看看