var foo = {n: 1}
var bar = foo
foo.x = foo = {n: 2}
console.log(foo) // {n: 2}
console.log(bar) // {n: 1, x: {n: 2 }}
有人可以解释第三行发生的事情吗?
答案 0 :(得分:1)
第foo.x = foo = {n: 2}
行执行此操作:
foo
正在引用{n: 2}
分配给foo
foo
现在引用的对象分配给步骤x
中确定的对象的属性1.
这基本上与函数调用的代码相同,其中foo
被覆盖在函数内部:
var foo = {n: 1}
var bar = foo
foo.x = test();
console.dir(bar);
function test() {
foo = 2;
return 3;
}

在
foo
函数内部更改了 test
,但在此之前确定了对象foo
。