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

JavaScript定时器函数中setInterval如何实现时间值递减?

关于这个JavaScript定时器中timer递减逻辑的解释

先看你贴的核心代码片段:

setInterval(function () {
    // 计算时分秒并格式化显示的逻辑...

    display.text(hours + ":" + minutes + ":" + seconds);

    if (--timer < 0) {
        timer = duration;
    }
}, 1000);

这里的关键是**--timer是前置递减运算符**,它的执行逻辑是:先把timer的值减1,再返回减后的值用于条件判断。也就是说,不管if里的条件是否成立,timer的递减操作都会先完成。

举个具体的流程例子(假设初始duration是300,也就是5分钟):

  • 第一次进入回调:先计算并显示00:05:00,然后执行--timer,timer变成299,判断299 < 0不成立,不执行重置。
  • 第二次进入回调:计算显示00:04:59,--timer让timer变成298,条件依旧不成立...
  • 直到timer变成0的时候:显示完00:00:00后,--timer把timer变成-1,此时-1 < 0条件成立,于是把timer重置为初始的300,接下来就会重新从5分钟开始计时,实现循环。

简单说,这个--timer写在if的条件里,但它本质上每次回调都会执行一次递减,条件判断只是用来决定是否要把timer重置回初始值而已。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 04:05:25