【发布时间】:2018-08-05 05:49:29
【问题描述】:
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 }}
谁能解释第三行发生了什么?
【问题讨论】:
标签: javascript
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 }}
谁能解释第三行发生了什么?
【问题讨论】:
标签: javascript
foo.x = foo = {n: 2} 行这样做:
foo正在引用的对象{n: 2} 分配给foo
foo 引用的对象分配给在步骤1. 中确定的对象的属性x
这与函数调用基本相同,其中 foo 在函数内部被覆盖:
var foo = {n: 1}
var bar = foo
foo.x = test();
console.dir(bar);
function test() {
foo = 2;
return 3;
}
foo 在 test 函数内部发生了变化,但对象 foo 在此之前确定。
【讨论】: