JavaScript代码技巧:foo.x的值是多少?

12 浏览
0 Comments

JavaScript代码技巧:foo.x的值是多少?

我在GitHub的前端面试题集合中发现了这个问题:

var foo = {n: 1};
var bar = foo;
foo.x = foo = {n: 2};

问题:`foo.x`的值是什么?

答案是`undefined`。

经过一些研究,我对这个问题的理解是(如果我理解错了,请纠正):

- `var foo = {n: 1};`声明了一个属性为`n`值为1的对象`foo`。

- `var bar = foo;`声明了一个引用和`foo`指向同一个对象的对象`bar`。

- `foo.x = foo = {n: 2};`我认为这等同于`foo.x = (foo = {n: 2});`。

- 然后我得到了`foo.x`等于`undefined`。然而,`bar.x`的值是对象`{n:2}`。

如果`bar`和`foo`指向同一个对象,为什么`bar.x`有值而`foo.x`是`undefined`?在`foo.x = foo = {n: 2};`中到底发生了什么?

0