函数柯里化
1 var fnCurry = function(fn) { 2 var _slice = Array.prototype.slice, 3 _args = slice.call(arguments, 1); 4 return function() { 5 return fn.apply(this, _args.concat(_slice.call(arguments))); 6 }; 7 }; 8 9 var forCurry = function(fn) { 10 var _slice = Array.prototype.slice, 11 _args = _slice.call(arguments, 1); 12 return function _fn() { 13 if (arguments.length === 0) { 14 return fn.apply(this, _args); 15 } 16 _args = _args.concat(_slice.call(arguments)); 17 return _fn; 18 }; 19 }; 20 21 function _add() { 22 var args = Array.prototype.slice.call(arguments), 23 sum = 0; 24 for (var i = 0, len = args.length; i < len; i++) { 25 sum += args[i]; 26 } 27 return sum; 28 }