// 写法为递归,对js的基础要求较高
// js 函数的 toString 自动调用
// https://blog.csdn.net/Chennfengg222/article/details/104745913
function add (){
let args = [].slice.call(arguments)
let fn = function(){
let fn_args = [].slice.call(arguments)
return add.apply(null, args.concat(fn_args))
}
fn.toString = function(){
return args.reduce((a,b)=>a+b)
}
return fn
}
add(1); // 1
add(1)(2); // 3
add(1)(2)(3); // 6
add(1)(2, 3); // 6
add(1, 2)(3); // 6
add(1, 2, 3); // 6
console.log(add(1)(2)(3))