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