首页 > 解决方案 > removeEventListener - 函数定义本身内的回调?

问题描述

我有以下代码,在其中向文档添加了一个事件侦听器,然后将其删除。

document.addEventListener("keypress", gameStart);

function gameStart() {
    document.querySelector("h1").innerHTML = "Level 1";
    document.querySelector("h2").style.visibility = "hidden";
    document.removeEventListener("keypress", gameStart);
}

我无法理解如何在 gameStart() 本身的定义中的 removeEventListener 方法中对 gameStart 进行回调。这对我来说似乎是循环的,但我觉得我在这里误解了一些基本的东西。我错过了什么?

标签: javascriptfunctiondom-events

解决方案


removeEventListener文档中我们可以看到:

target.removeEventListener(type, listener[, options]);
target.removeEventListener(type, listener[, useCapture]);

...

listener要从事件目标中删除的事件处理程序
   的EventListener

调用时不会调用该EventListener函数(在您的情况下gameStartremoveEventListener) ,因此没有任何循环调用或递归,它被传递给removeEventListener该函数,因此可以从该事件中注销该函数。


推荐阅读