实参为字符串变量,是按引用传递还是值传递。有资料说按引用,但我刚试了下貌似是按值传递的。求解~

解决方案 »

  1.   

    基本类型是值传递,引用类型是引用传递
    基本类型有:数字,字符串,布尔值,null以及undefined,其他均为引用类型。
      

  2.   

    书上说:
    "ECMAScript"中所有函数的参数都是按值传递的。也就是说把函数外部的值复制给函数内部的参数,就和值从一个变量复制到另一个变量一样。基本类型的传递如如同基本类型变量的复制一样,而引用类型值的传递则如同引用类型变量的复制一样。有不少开发人员在这一点上可能会感到困惑,因为访问变量有按值和按引用两种方式,而参数只能按值传递。
    很多开发人员错误的认为在局部作用域中修改的对象会在全局作用域中反映出来,就说明参数是按引用传递的。为了证明对象按值传递,看一下这个例子:function setName(obj){
             obj.name = "Jack";
             obj = new Object();
             obj.name = "Michel";
             }
             var person = new Object();
             setName(person);
             alert(person.name);//"Jack"
    我说:
    "如果你要真正的明白函数在参数传递时到底发现了什么,那你得看ECMAScript的底层实现"