我在这里遇到的这种奇怪现象可能有一个特定的名称,这可能是我在谷歌上找不到任何相关信息的原因。
我正在做我的项目,我在我的检查员身上发现了一个奇怪的物体。我的代码在许多文件中被破坏,并且同时发生了很多事情所以我没有立即注意到,但是当我打开我的对象时,我发现它是无限的。
我将尝试在这里重现我所做的:
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不会发生这种情况?而且,更令人担忧的是,这种代码有什么危险吗?
谢谢你的帮助!