问题遇到的现象和发生背景
引用变量的赋值没搞懂
问题相关代码,请勿粘贴截图
var a = {name:'Lilly'};
function fn (obj){
obj = {name:'Tom'};
}
fn(a);
console.log(a.name);
运行结果及报错内容
为什么运行结果是Lilly不是Tom
我的解答思路和尝试过的方法
调用函数时,将a赋值给obj,还是将obj换成a
引用变量的赋值没搞懂
var a = {name:'Lilly'};
function fn (obj){
obj = {name:'Tom'};
}
fn(a);
console.log(a.name);
为什么运行结果是Lilly不是Tom
调用函数时,将a赋值给obj,还是将obj换成a
obj和a都是指向数据{name:'Lilly'}的指针。在函数函数中给obj重新赋值时是将obj指向了另外一块数据,但是并不会影响a指向原来的{name:'Lilly'}数据。
如果是obj.name='xxxx',由于a是对象,所以obj是地址引用,会修改{name:'Lilly'}这个地址中的数据