为了账号安全,请及时绑定邮箱和手机立即绑定

如何理解下面一段js代码?

如何理解下面一段js代码?

繁星点点滴滴 2018-12-20 18:14:14
var a = {"x": 1};var b = a;console.log(b.x); a.x = 2;console.log(b.x);a = {"x":3};console.log(b.x);a.x = 4;console.log(b.x);上面四项输出打印a.x,输出结果分别是1 2 2 2问题:1.对象赋值是引用传递,但是var a = {"x": 1},等价于var a = {x: 1}吗?字符串做堆的指向栈?引用用可以用字符串来访问?  能不能分别解释一下上面四项输出?  
查看完整描述

1 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

var a = {"x": 1};

var b = a;

// 这里是浅拷贝,b和a都指向同一个{"x": 1}

console.log(b.x); 


a.x = 2;

// 因为是浅拷贝, a.x更改的时候, b.x其实也更改了

console.log(b.x);


a = {"x":3};

// 这里是把a的引用指向{"x":3} 此时a和b的指向不是一个了, 所以无论怎么更新a.x, b.x都不会变了

console.log(b.x);

a.x = 4;

console.log(b.x);


查看完整回答
反对 回复 2019-01-28
  • 1 回答
  • 0 关注
  • 389 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信