我在GitHub前端面试题合集中发现了这个问题:
var foo = {n: 1}; var bar = foo; foo.x = foo = {n: 2};
问题:foo.x 的值是多少?
答案是undefined
。
我做了一些研究,我明白这个问题是(如果我错了,请纠正我):
var foo = {n: 1};
声明一个foo
属性n
等于 1的对象。var bar = foo;
声明一个对象bar
,该对象引用与 相同的对象foo
。foo.x = foo = {n: 2};
我相信这等于foo.x = (foo = {n: 2});
- 然后我得到了
foo.x
等于undefined
. 但是, 的值bar.x
是 object{n:2}
。
如果bar
和foo
引用同一个对象,为什么bar.x
在foo.x
is时得到一个值undefined
?到底发生了foo.x = foo = {n: 2};
什么?