mad*_*g0n 9 javascript browser ajax jquery dom
在性能范围上,删除不再需要的元素是否有意义?或者浏览器是否在dom元素上执行自动垃圾收集,这些在代码中没有进一步引用?
$('some_element').fadeOut(1000, function(el){
$(el).remove(); // <-- does this make sense at all?
});
Run Code Online (Sandbox Code Playgroud)
这段代码:
$('some_element').remove();
Run Code Online (Sandbox Code Playgroud)
告诉浏览器你已完成该元素,并且不再需要它在DOM中.如果你的javascript中没有任何其他引用到该元素,垃圾收集器将释放它使用的内存.
如果不删除它,那么只要显示该网页,DOM元素就会保留在您的网页中.它永远不会被垃圾收集,因为浏览器无法知道您是否打算将它留在页面中.
手动删除不再需要的DOM元素是一种很好的做法.
但是,在99%的情况下,它无论以何种方式都无关紧要,因为与网页使用的整体内存相比,一个DOM元素使用的内存是微不足道的.无论如何,当用户转到另一个网页时,网页中的所有内容都将被释放.
这个主要时间对于释放这样的东西有很大的不同,那就是当你一遍又一遍地做同样的操作时(在一个大循环,一个计时器等......).在这种情况下,您不希望对象堆积起来并在使用页面时消耗越来越多的内存.