SOURCE

function curryingAdd(){
  //数组保存所有参数
  var args = [arguments[0]]

 //利用闭包收集所有参数
  var adder = function(){
      if(arguments[0] !== undefined){
         args.push(arguments[0])
      }
    return adder
  }

   // 利用toString隐式转换的特性,当最后执行时隐式转换,并计算最终的值返回
   adder.toString= function () {
        return args.reduce(function (a, b) {
            return a + b;
        });
    }

    return adder

}

console.log(curryingAdd(1)(2)(4)(5)())
console 命令行工具 X clear

                    
>
console