DOM对象是否在javascript中收集垃圾?

时间:2014-04-14 10:04:43

标签: javascript dom garbage-collection

var domElementReference = $(document.createElement('div'));

如果我实际上没有将DOM元素插入页面(一旦domElementReference超出范围),DOM元素是否会被销毁?

如果没有:如果我有一个创建DOM元素的构造函数,是否有自动方式在javascript中清除它们?

我想要的是将它们附加到元素上,然后使用

myChildNode.parentNode.removeChild(myChildNode);

但是,当对象超出范围时,我必须手动调用该函数,这会使整个垃圾收集工作变得混乱。理念。任何模式 自动销毁对象?

1 个答案:

答案 0 :(得分:5)

如果元素没有插入到DOM中,并且没有其他引用存在,那么是的,它们将被垃圾收集,就像任何其他变量一样。

现代浏览器使用Mark-and-sweep算法进行垃圾收集,这意味着垃圾收集器将查找并垃圾收集无法访问的对象。如果在函数中创建元素,但没有在别处分配引用或者不将它们插入到DOM中,那么在函数完成后它们将有资格进行垃圾收集。

没有必要手动尝试在JavaScript中释放内存,它都是隐式处理的。