1.函数参数的按值传递

 

1.1 基本类型,直接按值传递

 

1.2 引用类型(数组和对象), 也是按值传递,传递的是指针的值

 

function setName(obj){
    obj.name = "xiaoxiaozi";
    obj = new Object();
    obj.name = "admin";
}
var person = new Object();
setName(person);
alert(person.name); // 结果是 xiaoxiaozi

调用函数setName时,将引用类型person保存的内存地址(栈)按值传递给setName的参数obj,这样obj和person指向堆中同一个变量;

修改obj.name属性时,即是修改了person指向的对象的属性;obj = {}相当于让obj指向了内存中新的位置,后续修改obj.name = 'admin'就与person指向的对象无关了

posted on 2015-05-06 09:55  onesteng  阅读(125)  评论(0编辑  收藏  举报