我应该总是删除 EventListener 吗?

Should I always removeEventListener?

假设我向 window 添加一个 load 事件,如下所示:

window.addEventListener("load",initialize);

我是否应该在事件触发后从 window 中删除加载事件侦听器?它只触发一次,但它会在发生后继续监听吗?

做起来很简单:

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

但这是矫枉过正还是真的有利于我的程序的性能?我之所以问是因为 "load" 事件只触发一次,所以如果它自行解决就有意义了。不过,我从未听说过自我解决的侦听器......有什么想法吗?

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

Should I then remove the load event listener from the window after the event is fired?

我从未见过这样做,所以我认为没有真正需要它。

It only fires once, but will it continue to listen after that happens?

它只被 DOM 触发一次,是的。但它会继续收听,您可以轻松地手动触发 load 事件(有关示例,请参见 MDN)。

But is that overkill or will that actually benefit the performance of my program?

通常这是矫枉过正,因为这并没有太大的不同。当然,它可能会在 initialize 上触发垃圾回收,这可以节省一点内存(或更多,具体取决于您的代码结构)并通过将其提供给应用程序的其余部分来提高性能。

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