gpt4 book ai didi

javascript - 为什么无限对象不会破坏 javascript 中的流程?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:36:11 25 4
gpt4 key购买 nike

我在这里遇到的这种奇怪现象可能有一个特定的名称,这可能就是我在 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);

如果您检查“monkey”对象并展开“have”属性,您会发现它永远不会结束。因为香蕉总是有猴子,猴子总是有香蕉,递归。

(我认为这可能是因为 javascript 总是传递对对象的引用而不是实际值。)

我在其他语言中看到过这种情况,但它总是阻止执行并引发显式错误。

为什么 javascript 不会发生这种情况?而且,更令人担忧的是,这种代码有任何危险吗?

感谢您的帮助!

最佳答案

现代浏览器的垃圾收集器很聪明,可以检测仅通过循环引用保持事件状态的对象并将它们都处理掉。许多语言都这样做;所有 .NET 的,Java、Ruby、Python ......实现起来并不难。

关于javascript - 为什么无限对象不会破坏 javascript 中的流程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11355445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com