我在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.xis时得到一个值undefined?到底发生了foo.x = foo = {n: 2};什么?