我正在练习一些Javascript输出问题,并遇到了一个我无法理解输出的问题.这是代码:
var foo = {n: 1};
var bar = foo;
foo.x = foo = {n: 2};
Run Code Online (Sandbox Code Playgroud)
foo.x的价值是什么?
我认为它会给出{n:2,x:{n:2,x .....}}.但它的价值是不确定的.任何人都可以向我解释为什么它的价值即将到来
foo 只是对象的引用.
该线foo.x = foo = {n: 2};从左到右依次发生.以下是按顺序执行的步骤:
foo.x赋值为foo,它是一个n属性等于1 的对象的引用.
foo然后被分配给一个新对象,{n: 2}.从foo现在开始引用一个没有x属性的新对象,然后foo.x是未定义的.
但因为bar是对原始foo对象的引用(在重新分配之前),所以原始对象仍然存在于内存中.这就是bar对象具有x和n属性的原因.
| 归档时间: |
|
| 查看次数: |
42 次 |
| 最近记录: |