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);
添加回答
举报
0/150
提交
取消