1 function sum(){
2 let result = null;
3 for(let i=0; i<arguments.length; i++){
4 result += arguments[i];
5 }
6 return result;
7 }
8 console.log(sum(1,2,3));
9
10 function fn(){
11 let arr = Array.prototype.slice.call(arguments);
12 return eval(arr.join('+'));
13 }
14 console.log(fn(4,5,6));
let sum2 = (...arg) => eval(arg.join('+'));
console.log(sum2(1,2,3,4,6))
function add(){
let arg = [...arguments]; //获取传入的所有参数
function fn(){
arg.push(...arguments); //使用闭包,保留arg引用,防止被销毁
return fn
}
fn.toString = function(){ //进行类型比较时会调用对象的toString方法进行隐式转换
return arg.reduce((sum,cur) => sum + cur);
}
return fn; //在函数调用一次后返回fn函数
}
add(1)(2,3)(4)