JavaScript 一次性事件监听器

前两天给 hljs 修内存泄漏问题的时候仔细翻了一下 MDN,发现一个有点意思的东西,就是这个一次性的事件侦听器。

换言之,传统的事件侦听器的 cleanup 是这样的:

/** @param e {Event} */
function listener(e) {
    /* ... */
    window.removeEventListener('event', listener)
}
window.addEventListener('event', listener)

在 Chrome 55+ / Safari 10+ / Firefox 50+ 可以这么写:

window.addEventListener((e) => {
    doSomething()
}, { once: true })

这似乎是一个被很多人忽视的特性。

MDN Reference | WhatWG


发现这种水文时间花费最大的是做头图