arguments实参集合与局部变量、参数关系

fwxstar 2018-06-28 604次浏览

摘要: //    fn1(1,2,3);           &nbs...
//    fn1(1,2,3);              //实参------实际传递的参数
//    function fn1(a,b,c){}    //形参------形式上abc代表123
//
    function fn1(){
        //arguments => [1,2,3] ---- 实参的集合
    }

//当函数参数个数无法确定的时候:用arguments
    console.log(sum(1,2,3,"+"));
    console.log(sum(10,2,3,4,"-"));
    function sum(){
        var n=0;
        var n1=arguments[0];
        if(arguments[arguments.length-1] == "+"){
            for(var i=0;i<arguments.length-1;i++){
                n+=arguments[i];
            }
            return n;
        }else{
            for(var i=1;i<arguments.length-1;i++){
                n1-=arguments[i];
            }
            return n1;
        }
    }

//arguments与作用域的关系
    var a=1;
    function fn2(a){
        arguments[0] = 3; //重新赋值函数内部a = 3
        alert(a);         //3
        var a = 2;        //重新赋值函数内部a = 2
        alert(a);         //2
    }

    fn2(a); // 3 2
    alert(a); // 外部a未变动,所以为1