Javascript 为什么需要重新分配包含setInterval的变量才能使计数功能工作?

Javascript 为什么需要重新分配包含setInterval的变量才能使计数功能工作?,javascript,Javascript,我正在编写一个函数,该函数在加载DOM后开始计数。当我单击暂停按钮时,它停止,当我单击恢复按钮时,它继续计数。我想知道,为什么我需要将间隔重新指定为null,以使其工作。当我点击pause.addEventListener并点击start()函数时,它不是已经被重新分配了吗 document.addEventListener('DOMContentLoaded', (event) => { let interval function increaseInterval() {

我正在编写一个函数,该函数在加载DOM后开始计数。当我单击暂停按钮时,它停止,当我单击恢复按钮时,它继续计数。我想知道,为什么我需要将
间隔
重新指定为
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上的某个内容,您可以在本页的此处创建一个小提琴。