【发布时间】:2019-12-05 11:58:23
【问题描述】:
我在理解 JS 中的引用分配时遇到了问题。
var foo = { n: 1 };
var bar = foo;
bar.n = 3;
console.log(foo.n);
console.log(bar.n);
foo.x = foo = { n: 2 };
console.log(foo.n);
console.log(foo.x);
console.log(foo.x.n);
我预计最后 2 个控制台日志是:
console.log(foo.x); // Javascript object {n: 2}
console.log(foo.x.n); // 2
但实际输出未定义和执行错误分别。
【问题讨论】:
-
告诉我们您认为
foo.x = foo = {n: 2};做了什么以及为什么要这样写 -
对。这只会将该对象分配给 foo.x 和 foo。
-
所以 '=' 运算符是右侧的。因此首先执行 foo = {n: 2} ,所以 foo.n 属性变为 2?那么 foo.x 应该被赋值为 (foo = {n: 2}) 表达式的结果,我以为是 foo 的 Javascript 对象引用?
-
@adiga——是的,很多骗子。 :-)
标签: javascript