我应该始终删除EventListener吗

Should I always removeEventListener?

本文关键字:EventListener 删除 我应该      更新时间:2023-09-26

假设我将load事件添加到窗口中,如下所示:

window.addEventListener("load",initialize);

在事件触发后,我是否应该从窗口中删除加载事件侦听器?它只发射一次,但在那之后它还会继续听吗?

这很简单:

function initialize(event_){
    /* Just by adding this line. */
    window.removeEventListener("load",initialize);
}

但这是过分了,还是真的会对我的程序的性能有益?我之所以这么问,是因为"加载"事件只触发一次,所以如果它自己解决了,那就有意义了。我从来没有听说过一个自我解决的听众,不过。。。有什么想法吗?

编辑:此外,我并不特别关心"加载"事件,只是侦听器继续侦听只触发一次的事件的一般情况。

window.addEventListener('load', initialize, {once: true});

在事件触发后,我是否应该从窗口中删除加载事件侦听器?

我从来没有见过这样做,所以我认为没有真正的必要。

它只发射一次,但在那之后它还会继续听吗?

DOM只触发一次,是的。但它将继续侦听,您可以很容易地手动触发load事件(有关示例,请参阅MDN)。

但这是过分了,还是真的会对我的程序的性能有益?

通常情况下,这太过分了,因为这并没有太大的区别。当然,它可能会触发initialize上的垃圾收集,这可以节省一点内存(或更多,取决于您的代码结构),并通过使其可用于应用程序的其他部分来提高性能。