function box(obj){
obj.name = "Lee";
}
var obj = new Object();
obj.name = "Look";
box(obj);
console.log(obj.name); //打印Lee
function box(obj){
obj.name = "Lee";
}
var obj = new Object();
box(obj);
obj.name = "Look";
console.log(obj.name); //打印Look
上面2段代码中,obj.name = "Look"这句代码放置的位置不同,为什么结果差别这么大?
注意下,js中是没有按引用传递这一说法的,引用类型作为参数传入到函数中算是按共享传递,对象obj其实也是一个指针啊,所以传参过程就是obj将其地址复制给box函数中的局部变量obj中,其实全局的obj与函数中局部obj指向的是内存中的同一块地址,所以可以看出,函数也可以修改对象obj的属性值,你上面的代码相当于