码迷,mamicode.com
首页 > 其他好文 > 详细

函数柯里化

时间:2019-12-26 21:10:48      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:nbsp   缓存   UNC   ==   func   闭包   prot   部分   柯里化   

柯里化的好处是可以将多个参数的函数,先传部分参数调用得到一个缓存的函数,避免了重复模板。(利用闭包进行参数缓存,递归的收集参数),如下是一个简单的柯里化实现。具体使用柯里化可以使用loash,curry 工具函数
 
可以实现无限的参数收集调用
function curry(fn) {
    if (typeof fn != "function") {
        return;
    }
    var length = fn.length;
    function save(){

        var arg = Array.prototype.splice.call(arguments,0,arguments.length);

        if(arg.length==length){
            return fn.apply(null,arg)
        }
        else
        {
            return function (){
                var args = Array.prototype.splice.call(arguments,0,arguments.length);
               return save.apply(null,arg.concat(args));
            };
        }

    }

    return save;
}
var add1 = curry(function(a,b,c,d,e,f){
    return a+b+c+d+e+f;
})
console.log(add1(1,2,3,4,5,6));
console.log(add1(1)(2)(3)(4)(5)(6))

函数柯里化

标签:nbsp   缓存   UNC   ==   func   闭包   prot   部分   柯里化   

原文地址:https://www.cnblogs.com/chillaxyw/p/12104143.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!