var a = {n:1}
var b = a;
a.x = a = {n:2}
console.log(a.x);//undefined
console.log(b.x);//{n:1,x:{n:2}
a.x和b.x的结果为什么会这样?
问题出在a.x = a = {n:2},
a.x = a = {n:2}
//等同于
a.x = {n:2}
a = {n:2}
//并非等同于
a = {n:2}
a.x = a
本文探讨了JavaScript中对象赋值的陷阱,特别是在使用变量进行对象赋值时的引用问题。通过具体代码示例,解释了为何在某些情况下对象属性会出乎意料地改变,并提供了理解这一现象的关键。
var a = {n:1}
var b = a;
a.x = a = {n:2}
console.log(a.x);//undefined
console.log(b.x);//{n:1,x:{n:2}
a.x和b.x的结果为什么会这样?
问题出在a.x = a = {n:2},
a.x = a = {n:2}
//等同于
a.x = {n:2}
a = {n:2}
//并非等同于
a = {n:2}
a.x = a

被折叠的 条评论
为什么被折叠?