为什么当对象的属性被分配给对象时,它的属性是不确定的?

时间:2016-04-18 03:05:37

标签: javascript

var foo = {n: 1};
var bar = foo;
foo.x = foo = {n: 2};
console.log(foo.x) // undefined

我意识到变量存储对象作为参考。难道foo.x只是另一个变量吗?为什么它不能指向作为对象的引用?

1 个答案:

答案 0 :(得分:0)

扩展您所做的事情:

var foo = {n: 1}; // foo = ref#1
var bar = foo; // bar = ref#1
foo.x = foo = {n: 2}; // (ref#1) foo.x = foo (ref#2); foo = ref#2;
console.log(foo.x) // ref#2.x ... which is undefined (from ref#2)
console.log(bar.x)  // ref#2 ... which is ref#1

关键是foo.x首先评估 ,这会导致对ref#1的引用...然后我们将ref#2分配给它。