JavaScript循环引用是如何工作的?

4

我不确定为什么这个有效。

var a = {};
a.hello = a;

如果您在控制台中探索对象,您会看到类似于这样的内容:enter image description herea.hello = a 是一个循环引用。当我们赋值 a.hello = a 时,一切似乎都会崩溃。有人能解释一下内部发生了什么吗?
2个回答

5
你有一个单一的对象。
该对象包含一个属性,该属性是指向同一对象的指针。
就是这样。
从那里开始,你可以不断地递归到a.hello.hello.hello.hello,但你仍然只是引用同一个对象。也就是说,无论深度如何,a.hello === a.hello.hello
考虑到window的行为方式相同(window.window.window.window.MUSHROOM),它不会“爆炸”也是一件好事!

4

在处理JavaScript对象时,它们是通过引用而不是拷贝来处理的。因此,循环结构并不会成为问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接