SOURCE

function add() {
  var args = [].slice.call(arguments)
  var fun = function () {
		var newargs = args.contact([].slice.call(arguments))
    return add.apply(null,newArgs)
  }
  fun.toString = function () {
     return args.reduce(function(a, b) {
        return a + b;
    })
  }
  return fun
}
console.log(add(2, 3)(5))

// var currying = function(fn) {
//     var args = [].slice.call(arguments, 1);
 
//     return function() {
//         // 主要还是收集所有需要的参数到一个数组中,便于统一计算
//         var _args = args.concat([].slice.call(arguments));
//         return fn.apply(null, _args);
//     }
// }
 
// var sum = currying(function() {
//     var args = [].slice.call(arguments);
//     return args.reduce(function(a, b) {
//         return a + b;
//     })
// }, 10)
 
// console.log(sum(20, 10)(10,3));  // 40
console 命令行工具 X clear

                    
>
console