有人可以详细解释 Javascript 引擎如何处理循环引用吗?浏览器甚至 node.js 之间有很大区别吗?
我正在谈论的是对象内的显式后退/下一个引用。例如:
var objA = {
prop: "foo",
next: null
};
var objB = {
prop: "foo",
prev: null
};
objA.next = objB;
objB.prev = objA;
我们走了。如果我们执行 aconsole.log( objA )
我们可以看到我们创建了一个无限链。最大的问题是,这不好吗?未明确清理时是否会造成内存泄漏?
所以我们必须
objA.next = null;
objB.prev = null;
或者垃圾收集器会在这样的星座上照顾我们吗?