如果在代码中有一些引用,垃圾收集器将不会清除从DOM元素中删除的内容。但是,如果此引用内部附加到此元素侦听器,该怎么办?
<span id="element">aga</span>
<script>
function attach() {
var element = document.getElementById("element");
element.addEventListener("click", function() {
//1) if element isn't used in this function
console.log('aga');
//2) if element is used in this function
console.log(element);
});
}
attach();
document.body.innerHTML = '';
</script>
答案 0 :(得分:0)
如果浏览器“正确”实现了垃圾收集(特别是如果它使用Mark-and-sweep algorithm),则应该收集该DOM元素,因为它现在无法从全局范围访问。
当GC实现仅使用引用计数算法时,您的问题可能与导致潜在内存泄漏的循环引用有关。有关详细信息,请参阅上面的链接。
您可能也对这篇文章感兴趣:What is JavaScript garbage collection?