所有人:
我有以下代码:
let button = document.querySelector("#button");
function outer() {
let counter = 0;
return function() {
counter ++;
console.log(counter)
if (counter === 5) {
console.log("Five")
return;
};
}
}
let increase = outer();
button.addEventListener("click", increase);
我想问用户是否要继续玩。如果答案为是,则计数器将设置为0,游戏将重新开始;否则,游戏将重新开始。但是,如果答案为否,该功能将停止。问题是当counter等于5时函数不返回。为什么?
答案 0 :(得分:2)
counter
变量的值达到5后,您必须删除点击侦听器。
let button = document.querySelector("#button");
function outer() {
let counter = 0;
return function() {
counter++;
console.log(counter)
if (counter === 5) {
console.log("Five")
button.removeEventListener("click", increase); /** remove the listener **/
};
}
}
let increase = outer();
button.addEventListener("click", increase);
<button id="button">click me</button>
详细了解
removeEventListener
函数。