js中函数柯里化(currying)

函数柯里化就是创建已经设置单个参数或者多个参数的函数,函数变为接受一个参数,返回一个值,

1,实现

默认下为参数复用的情况

function curry(fn){
        var curry=function(fn){
              //这里是需要复用的参数
              var args=Array.prototype.slice.call(arguments,1);
              return function(){
                //这里是自身参数
                  var innerArgs=Array.prototype.slice.call(arguments);
                   //合并自身参数和复用的参数
                var finalArgs=args.concat(innerArgs);
                return fn.apply(null,finalArgs);
            }
        }
}

2,应用

1,参数复用

    var curry=function(fn){
        //这里是需要复用的参数
        var args=Array.prototype.slice.call(arguments,1);
        return function(){
               //这里是自身参数
               var innerArgs=Array.prototype.slice.call(arguments);
               //合并自身参数和复用的参数
            var finalArgs=args.concat(innerArgs);
            return fn.apply(null,finalArgs);
        }
    }
    var add=function(){
           var args=Array.prototype.slice.call(arguments);
           var sum=0;
           for(var i=0;i

2,延迟计算

创建已经设置单个参数或多个参数的函数的情况下,即在参数复用的情况,同时实现延迟计算

        var add=function(){
               var args=Array.prototype.slice.call(arguments);
               var sum=0;
               for(var i=0;i

你可能感兴趣的:(js中函数柯里化(currying))