js实现无限柯里化加法

前端进阶计划第42周作业 看到。

js实现无限柯里化加法,也就是实现:

add(1)(2)(3)(); // => 6
add(1)(2)(3)(4)(); // => 10
add(1)(2)(3)(4)(5)(); // => 15

参考了柯里化的通用实现,于是写成了这样:

function adder( me ) {
            var slice = Array.prototype.slice,
            __args = slice.call(arguments);    
             return function () {
                var __inargs = slice.call(arguments);
                if( arguments.length == 0 ){
                    var me = 0 ;
                    for(var i in __args){
                        me +=  __args[i];
                    }
                    return me ;            
                }                    
                else
                   return adder.apply(this, __args.concat(__inargs));
            };
        }
alert( adder(1)(2)() );

 

posted on 2015-11-05 18:01  Stois  阅读(868)  评论(0)    收藏  举报