JavaScript代码技巧:foo.x的值是多少?
- 论坛
- JavaScript代码技巧:foo.x的值是多少?
12 浏览
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};`中到底发生了什么?