手写一个柯里化函数

131 阅读1分钟
    Function.prototype.curry=function(){
            var arr = [];
            var self=this;
            return function () {
                if (arguments.length > 0) {
                    arr = arr.concat(Array.from(arguments));
                    return arguments.callee;
                } else {
                    return self.apply(null, arr);
                }
            }
        }


        function getSum(){
            var arr = Array.from(arguments);
            var sum = arr.reduce(function (value, item) {
                return value + item;
            });
            return sum;
        }

       var fn=getSum.curry();
       fn(10)(20);
       fn(30,40,50);
       fn(100);
       var sum=fn();
       console.log(sum);