UR9*_*82T 2 javascript function dom-events
我有以下代码,我向文档添加了一个事件侦听器,然后将其删除。
document.addEventListener("keypress", gameStart);
function gameStart() {
document.querySelector("h1").innerHTML = "Level 1";
document.querySelector("h2").style.visibility = "hidden";
document.removeEventListener("keypress", gameStart);
}
Run Code Online (Sandbox Code Playgroud)
我无法理解如何在 gameStart() 本身定义内的 removeEventListener 方法中回调 gameStart。这对我来说似乎是循环的,但我觉得我在这里误解了一些基本的东西。我错过了什么?
在removeEventListener文档中我们可以看到:
Run Code Online (Sandbox Code Playgroud)target.removeEventListener(type, listener[, options]); target.removeEventListener(type, listener[, useCapture]);...
监听
的EventListener事件处理程序的函数从事件目标移除。
该EventListener函数(在您的情况下gameStart)在调用时不会被调用removeEventListener,因此没有任何循环调用或递归,它被传递给removeEventListener以便可以从该事件中取消注册该函数。