javascript - 如何在内存里清除 js 运行的结果
PHPz
PHPz 2017-04-10 14:59:10
[JavaScript讨论组]

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

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

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

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

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

PHPz
PHPz

学习是最好的投资!

全部回复(2)
巴扎黑

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

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

天蓬老师

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号