Javascript 为什么需要重新分配包含setInterval的变量才能使计数功能工作?
我正在编写一个函数,该函数在加载DOM后开始计数。当我单击暂停按钮时,它停止,当我单击恢复按钮时,它继续计数。我想知道,为什么我需要将Javascript 为什么需要重新分配包含setInterval的变量才能使计数功能工作?,javascript,Javascript,我正在编写一个函数,该函数在加载DOM后开始计数。当我单击暂停按钮时,它停止,当我单击恢复按钮时,它继续计数。我想知道,为什么我需要将间隔重新指定为null,以使其工作。当我点击pause.addEventListener并点击start()函数时,它不是已经被重新分配了吗 document.addEventListener('DOMContentLoaded', (event) => { let interval function increaseInterval() {
间隔
重新指定为null
,以使其工作。当我点击pause.addEventListener
并点击start()
函数时,它不是已经被重新分配了吗
document.addEventListener('DOMContentLoaded', (event) => {
let interval
function increaseInterval() {
counter.innerHTML = parseInt(counter.innerHTML) + 1;
}
function start() {
if (!interval) {
interval = setInterval(function(){increaseInterval()}, 1000)
}
}
function stop() {
if (interval) {
clearInterval(interval)
interval = null
}
}
start()
pause.addEventListener('click', (event) => {
event.preventDefault()
if (pause.innerText == "pause") {
stop();
pause.innerText = "resume";
} else {
start();
pause.innerText = "pause";
}
})
})
这是因为要创建新的间隔,您需要:
function start()
if (!interval) {
interval = setInterval(function(){increaseInterval()}, 1000)
}
}
调用clearInterval
时,代码停止计时器,但变量interval
保持有值且其值不为空,因此当调用if(!interval)
时,其结果为false,因此不会执行if
代码
当您手动设置
interval=null
时,如果(!interval)的结果为真,则会创建一个新的间隔。您能在这里创建一个小提琴,让我们重现您的问题吗?我不清楚为什么必须将间隔设置为null。当你忽略此变量时,什么是不起作用的(顺便说一句,你也应该在clearinterval()函数之后使用;
。启动和停止使用此变量在它们之间进行通信。它们“知道”何时根据分配给它的值采取行动。我给你这个提示:如果(!interval)
表示如果(interval!=null)
Hello,您可以使用console.log()查看您的interval变量
在开始时,当您仅使用clearInterval时,我认为它仍然是定义和值的,因此它不会等于false,因此您的如果您的条件不能实现并且您的语句不会被执行,如果您不链接到github上的某个内容,您可以在本页的此处创建一个小提琴。