You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript秒表疑问:interval设为null的作用及防重复启动原理

秒表代码疑问解答

一、将interval设为null的作用

在stop函数里,clearInterval(interval)只是停止了计时器的运行,但interval变量还存着之前setInterval返回的计时器ID(一个非零数字)。如果不把它设为null:

  • 下次点击start按钮时,if (interval)的判断会认为计时器还在运行,直接return,导致无法重新启动计时器;
  • 无法通过interval的状态准确判断当前是否有活跃的计时器,整体状态会混乱。

把interval设为null,相当于给程序一个明确的标记:当前没有正在运行的计时器,这样后续的启动、状态判断才能正常工作。

二、start函数如何防止多次点击重复启动计时

看这段核心代码:

function start () {
    if (interval) {
        return
    }

    interval = setInterval(timer, 1000);
}
  • 第一次点击start时,interval初始值是null,if (interval)判断为false,会执行interval = setInterval(...)启动计时器,此时interval存储了计时器的ID(非零数字,布尔判断为true);
  • 若此时多次点击start,if (interval)判断为true,会直接执行return,跳过后面的setInterval调用,也就不会创建新的计时器;
  • 要是没有这个判断,每点击一次start就会创建一个独立的计时器,多个计时器会同时每秒调用timer函数,导致seconds被多次递增,时间会飞快跳动,完全不符合秒表的需求。

内容的提问来源于stack exchange,提问作者trox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 12:50:22