【发布时间】:2012-07-06 03:30:42
【问题描述】:
我在这里遇到的这种奇怪现象可能有一个特定的名称,这可能是我在 Google 上找不到任何相关信息的原因。
我正在处理我的项目,我在我的检查器中发现了一个奇怪的物体。我的代码在许多文件中被破坏,并且同时发生了很多事情所以我没有立即注意到,但是当我打开我的对象时,我发现它是无限的。
我会尝试在这里重现我所做的:
var monkey = {dad: 1, son: 1, have: null};
var banana = {state: 1, eatable: 1, have: null};
monkey.have = banana;
banana.have = monkey;
console.log(monkey);
如果你检查“猴子”对象,并展开“有”道具,你会发现它永远不会结束。因为香蕉总是有猴子,猴子总是有香蕉,递归地。
(我认为这可能是由于 javascript 总是传递对对象的引用而不是实际值。)
我在其他语言中看到过这种情况,但它总是阻止执行并引发显式错误。
为什么 javascript 不会发生这种情况? 而且,更令人担忧的是,这种代码有什么危险吗?
感谢您的帮助!
【问题讨论】:
-
称为循环引用
-
@renato 它与
banana和monkey被引用的instance相同 - 调试器只允许您继续向下钻取属性...
标签: javascript object recursion circular-reference