标签:
1 function setName (obj) {
2 //obj.name = "xiao";
3 obj = {};
4 obj.name = "che";
5 }
6 var person = {};
7 setName(person);
8 console.log(person.name);
问题:第 2 行不注释时,输出 “xiao” ;第 2 行注释时,输出 undefined 。
问题的解决:引用类型在作为参数传递是也是值传递,这时参数和原引用的对象都指向堆中的同一个对象,但是在函数内部,对参数变量重新定义时,便指向了另一个对象,所以再对他的属性赋值并不改变原引用的对象。
参考资料:JavaScript 传递参数是值传递?还是值传递啊?
另外:函数执行相关逻辑之前,初始化变量的过程:
标签:
原文地址:http://www.cnblogs.com/xiaochechang/p/5850973.html