任意数求和

 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)

 

posted @ 2019-07-10 10:52  石头记1  阅读(259)  评论(0)    收藏  举报