是否有必要/建议在尝试删除之前检查eventHandler是否存在?

spr*_*man 5 javascript events

我有这样的事情:

if (something) {
    init();
} else {
    document.addEventListener('CUSTOM_EVENT', init, false);
}

var init = function() {
    document.removeEventListener('CUSTOM_EVENT', init, false);
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

我是否需要在该removeEventListener电话周围添加某种检查?如果是这样,我可以这样做:

var eventAdded = false;
if (something) {
    init();
} else {
    document.addEventListener('CUSTOM_EVENT', init, false);
    eventAdded = true;
}

var init = function() {
    if (eventAdded) {
        document.removeEventListener('CUSTOM_EVENT', init, false);
    }
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

但感觉有点不雅.removeEventListener如果没有什么大不了的话,我宁愿离开原始电话,或者如果可能的话,做一些不需要外部变量的事情.

Jam*_*lin 8

https://developer.mozilla.org/en/DOM/element.removeEventListener

使用不识别EventTarget上任何当前已注册的EventListener的参数调用removeEventListener()无效.