有人能详细解释一下Javascript引擎是如何处理循环引用的吗?不同浏览器或甚至node.js之间是否存在很大差异?
我所指的是对象内部明确的后退/前进引用。例如:
var objA = {
prop: "foo",
next: null
};
var objB = {
prop: "foo",
prev: null
};
objA.next = objB;
objB.prev = objA;
我们做到了。如果我们执行 console.log( objA )
,我们可以看到我们创建了一个无限链。
最重要的问题是,这样做有什么坏处吗?如果不明确清除它,是否会导致内存泄漏?
那么,我们必须怎么做呢?
objA.next = null;
objB.prev = null;
或者说在这样的星座中垃圾收集器会照顾我们吗?