为什么对象的属性在分配给对象时未定义

Why the property of an object would be undefined when it's assigned to the object?

本文关键字:对象 未定义 分配 属性 为什么      更新时间:2023-09-26
var foo = {n: 1};
var bar = foo;
foo.x = foo = {n: 2};
console.log(foo.x) // undefined

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

扩展您所做的:

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.