请实现一个 add 函数,满足以下功能。
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
思路:
1.函数内部返回新的函数
2.函数内部记录每次传入的参数
3.函数结果通过调用默认toString方法输出
代码如下:
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
}
网友评论