在 JavaScript 中使用 setInterval 函数时,经常会遇到一个问题,即在程序执行时,如果需要清除定时器,要使用 clearInterval 函数。但是,有时会出现定时器不能被清除的情况,这是因为 setInterval 返回的定时器 ID 可能已经被清除或被超时。
解决这个问题的方法是在 setInterval 调用时将定时器 ID 保存在一个全局变量中或者利用闭包存储,这样可以保证后续能够正确地清除定时器。
示例如下:
let timer = null; // 定义全局变量来存储定时器 ID
function startTimer() { let count = 0; timer = setInterval(() => { count++; console.log(count); }, 1000); }
function stopTimer() { clearInterval(timer); // 可以正确清除定时器 }
startTimer(); setTimeout(stopTimer, 5000); // 5 秒后清除定时器