任意数求和
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)