4

当页面导航离开时,Javascript 会发生什么?我正在阅读的一本书正在指导清除“卸载”事件的内容。

但有什么意义呢?当页面在浏览器中移开时,不是所有内容都丢失并释放了吗?

谢谢,

肖恩

4

3 回答 3

1

唯一有用的情况是清除在 DOM 和 JS 引擎之间具有循环引用的事件处理程序(并不总是事件处理程序,但它是最常见的方式)并因此导致内存泄漏。卸载页面时,其他所有内容都会被垃圾收集

卸载网页后,请参阅这篇文章Javascript 内存泄漏

于 2013-02-04T18:53:56.493 回答
1

通常浏览器会在页面导航后很好地清理内存。但是,您可以做一些事情来混淆浏览器并使其在页面转换之间挂起内存。当您将数据存储在 DOM 元素中或在 DOM 和脚本之间存在循环引用时尤其如此。

几年前,在较旧的浏览器中,这是一个更大的问题。当前的浏览器版本在页面转换之间的内存清理方面做得更好。

在页面卸载期间进行一些清理可能是有意义的,但最好修改您的设计以消除循环引用。不要将数据存储在 DOM 中。

这是一篇关于更多细节的好文章

MDN 上的一篇关于FireFox 中的 JavaScript 泄漏的文章。

这是包含 IE 特定详细信息的Microsoft 知识库文章。

于 2013-02-04T18:56:18.120 回答
-1

当然。但是您可以通过卸载来释放浏览器中的一些内存(现在不是很有用,但在过去很有用)。或者您可以在卸载时执行一些操作(即询问用户确认、保存内容等)。

于 2013-02-04T18:51:06.500 回答