如果我不删除EventListener (JavaScript) 会发生什么?

Zet*_*eth 3 javascript vue.js

我正在添加一些事件侦听器来检查它是否是触摸设备。所以我希望事件监听器一直存在,直到页面重新加载。

我是否还应该删除事件侦听器(removeEventListener( 'touchstart', myFunction )?如果是,为什么?

它位于 VueJS 应用程序的根实例中。我在创建的部分中添加事件侦听器。

And*_*hiu 5

在销毁添加事件侦听器的组件之前应删除事件侦听器的主要原因是,一旦您的组件消失,事件发生时应执行的函数也会消失(在大多数情况下),因此,如果您绑定的元素监听器的寿命比组件的寿命长,当事件发生时,您会收到错误,因为找不到要执行的代码。

虽然这在大多数情况下都是边缘情况,但它往往会产生特别难以调试的错误。

最重要的是,在 SPA(这是 Vue 应用程序最常见的用法)中,不删除侦听器可能很快就会成为性能问题。


重要提示:只有您自己通过 DOM 操作添加的事件(例如:el.addEventListener())才需要删除。Vue 会自行清理(@click@my-custom-event等...)。