首页 > 如何在内存里清除 js 运行的结果

如何在内存里清除 js 运行的结果

可能题目表达的不是很清除,但是我也不知道怎么去描述了,欢迎修改。

目前使用 jQuery Mobile + Phonegap 写手机端程序。

程序采取 jQuery Mobile 默认页面跳转方式,我把每个子页面独有的 js 放在 data-role="page" 的最后,这样会产生一个问题,虽然随时可以通过 $().remove() 去掉已加载的页面 DOM,但如何去掉已经不需要的子页面 js 运行结果呢?

比如某子页面的 $().on() 已不再需要,何况 $() 对应的 DOM 都被移除了。

写到这里我突然发觉,是不是对应 DOM 被移除,其绑定的事件处理器也就被移除了,即对应 js 运行的结果已经被移除了? js 运行的结果出了事件处理器还有啥?


JavaScript 的垃圾回收(GC)是自动运行的,只要有一个变量无法被引用到,就有可能(具体取决于 GC 的算法)在下次回收时释放掉对应的内存。如果一个 DOM 被移除了,且没有变量引用它(或者引用它的变量已无法被引用到),那么就有可能在下次回收时被释放掉。

一般只要不做出类似于「把所有已删除的 DOM 保存在一个全局变量里」这样的事情,通常情况下是不必关心 GC 的。局部变量不必手动赋值为 null, 如果没有闭包引用到局部变量的话,超出作用域(函数)就不会有变量再引用到它了。


是不是对应 DOM 被移除,其绑定的事件处理器也就被移除了

除了IE外,其他内核的浏览器,应该都是这样处理的,当然包括webkit

【热门文章】
【热门文章】