<分区>
谁能说出输出是如何变成undefined
的?
var foo = {n: 2};
foo.x = foo = {n: 2};
console.log(foo.x); // undefined
<分区>
谁能说出输出是如何变成undefined
的?
var foo = {n: 2};
foo.x = foo = {n: 2};
console.log(foo.x); // undefined
最佳答案
foo.x = foo = { n: 2 };
foo.x
引用了foo
引用的对象的属性x
。但是,foo = { n: 2 }
将一个全新的对象分配给 foo
。 x
确实分配给了一个对象,但该对象立即被另一个对象替换。具有 x
属性的对象不再被任何东西引用。
你可以把那行读成
foo.x = (foo = { n: 2 });
var foo = { n: 2 };
foo.x = foo = { n: 2 };
console.log(foo.x);
关于javascript - 对象属性的双重赋值导致未定义的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37793432/