日期:2014-05-16  浏览次数:20383 次

问一个很弱的问题,获取DOM元素后,不再使用时需要显性置为null吗?
问一个很弱的问题,获取DOM元素后,不再使用时需要显性置为null吗?

比方  var el = document.getElementById('xxx');

这个 el 在不使用后,需要马上给它设置成 null 吗,还是等待自动回收。

另外,js对这种对象是在什么时候自动回收的。。


请指教~

------解决方案--------------------
局部变量 自己就可以回收了(如果没有被其他函数里面引用,就是闭包那种,那种变量GC不回收)



GC的回收机制是 隔一段时间回收不用的局部变量咯  (多长时间我也不知道 )
因为是单线程  所以可能会给当前正在运行的程序带来点延迟
你的问题是什么时候回收   其实一直在回收   具体是什么时间,我不知道啊


如果设置成null了 其实这个变量还是存在啊  那个变量的值是null
只是这样就断开了于变量与dom的关联     听说是因为ie6的循环引用才需要断开
所以我认为把变量设置成了null  还是要等GC 才能真正的从内存中删除

以上都是个人见解......

一篇文章

http://www.cnblogs.com/hyddd/archive/2013/02/07/2908598.html

------解决方案--------------------
无需,赋值为null也无用,当dom加入到页面中,就是页面对象的成员,会一直生存,在从页面中移除前,资源是无法被释放的.
仅仅把所谓的"变量"释放是无意义的,变量引用的资源才是根本,某些情况下把变量赋值为null是为了快速回收资源(在对象没有被还在生存的变量引用时,对象占用的资源会自动回收),当即使赋值为null也无法释放资源时,赋值为null是无意义的