js实现每过1秒加1
使用 setInterval 实现每秒加1
通过 setInterval 方法可以定时执行函数,适合周期性任务。以下是一个简单的实现示例:

let count = 0;
const timer = setInterval(() => {
count++;
console.log(count);
}, 1000);
使用 setTimeout 递归实现
递归调用 setTimeout 可以避免 setInterval 的潜在问题(如执行时间不精确):

let count = 0;
function increment() {
count++;
console.log(count);
setTimeout(increment, 1000);
}
increment();
清除定时器的方法
需要停止计数器时,可以通过 clearInterval 或 clearTimeout 终止:
// 对于 setInterval
clearInterval(timer);
// 对于 setTimeout
// 需在递归调用中保存 timeoutId
let timeoutId;
function increment() {
count++;
console.log(count);
timeoutId = setTimeout(increment, 1000);
}
clearTimeout(timeoutId);
使用 requestAnimationFrame 实现(高精度)
适用于需要高精度计时的场景(如动画),但需手动计算时间差:
let count = 0;
let lastTime = 0;
function increment(timestamp) {
if (timestamp - lastTime >= 1000) {
count++;
console.log(count);
lastTime = timestamp;
}
requestAnimationFrame(increment);
}
requestAnimationFrame(increment);
注意事项
- 浏览器环境下定时器最小延迟通常为 4ms(根据规范)
- Node.js 中定时器行为可能略有不同
- 长时间运行的定时器可能导致内存泄漏,需适时清理






