猿问

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

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}吗?字符串做堆的指向栈?引用用可以用字符串来访问?


  

能不能分别解释一下上面四项输出?

  


繁星点点滴滴
浏览 390回答 1
1回答

慕尼黑8549860

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);
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答