首页 > 解决方案 > Javascript 输出问题

问题描述

我正在练习一些 Javascript 输出问题,遇到了一个我无法理解输出的问题。这是代码:

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

foo.x 的值是多少?

我认为它会给出{n:2,x:{n:2,x.....}}。但它的价值是不确定的。谁能向我解释为什么它的价值是不确定的

标签: javascriptoutput

解决方案


foo只是对对象的引用。

这条线foo.x = foo = {n: 2};从左到右依次出现。以下是按顺序发生的步骤:

  1. foo.x被赋予 的值foo,它是一个n属性等于 1 的对象的引用。

  2. foo然后被分配给一个新对象,{n: 2}. 由于foonow 引用了一个没有x属性的新对象,因此foo.x未定义。

但是因为bar是对原始foo对象的引用(在重新分配之前),所以原始对象仍然存在于内存中。这就是bar对象同时具有xn属性的原因。


推荐阅读