关于#javascript#的问题:定时器用num == 0 时, 还剩两秒的时候就执行if里的内容了

定时器这么写有什么问题 为什么不能用num == 0? 用num < 0 就可以

用num == 0 时, 还剩两秒的时候就执行if里的内容了

        <button>点击按钮</button>
        <script>
            // 获取
            const btn = document.querySelector('button');
            // 点击事件
            btn.addEventListener('click', function () {
                // 禁用按钮
                btn.disabled = true;
                // 倒计时
                let num = 5;
                // 开启定时器
                let timer = setInterval(() => {
                    btn.innerText = `倒计时${num}秒后启用`;
                    num--;
                    // 倒计时结束时
                    if (num == 0) {
                        // 关闭定时器
                        clearInterval(timer);
                        // 恢复文字
                        btn.innerText = '点击按钮';
                        // 解除禁用
                        btn.disabled = false;
                    }
                }, 1000);
            });

其实是执行了5秒的只是视觉效果,让你觉得每次到2秒就结束了,你可以这样修改代码
把num 改成6,然后调换
btn.innerText = 倒计时${num}秒后启用;
num--;
这两行代码的顺序。


```javascript
    // 获取
    let btn = document.querySelector('button');
    // 点击事件
    btn.addEventListener('click', function () {
      // 禁用按钮
      btn.disabled = true;
      // 倒计时
      let num = 6;
      // 开启定时器
      let timer = setInterval(() => {
        num--;
        btn.innerText = `倒计时${num}秒后启用`;
        console.log(num)
        // 倒计时结束时
        if (num == 0) {
          // 关闭定时器
          clearInterval(timer);
          // 恢复文字
          btn.innerText = '点击按钮';
          // 解除禁用
          btn.disabled = false;
        }
      }, 1000);
    });


```

代码没问题,执行了下不存在你说的情况,要不你在debug下试试?