js 实现每秒递增
在 JavaScript 中实现每秒递增的功能,可以通过多种方式实现。以下是几种常见的方法:
使用 setInterval
setInterval 是 JavaScript 中用于周期性执行代码的函数,适合实现每秒递增的功能。

let counter = 0;
const intervalId = setInterval(() => {
counter++;
console.log(counter);
}, 1000);
// 停止递增
// clearInterval(intervalId);
使用 setTimeout 递归调用
setTimeout 也可以实现每秒递增,通过递归调用自身来模拟周期性执行。
let counter = 0;
function increment() {
counter++;
console.log(counter);
setTimeout(increment, 1000);
}
increment();
使用 requestAnimationFrame
如果需要更精确的时间控制,可以使用 requestAnimationFrame,但需要手动计算时间间隔。

let counter = 0;
let lastTime = 0;
function increment(timestamp) {
if (timestamp - lastTime >= 1000) {
counter++;
console.log(counter);
lastTime = timestamp;
}
requestAnimationFrame(increment);
}
requestAnimationFrame(increment);
使用 async/await 和 Promise
现代 JavaScript 中,可以使用 async/await 结合 Promise 实现每秒递增。
async function increment() {
let counter = 0;
while (true) {
await new Promise(resolve => setTimeout(resolve, 1000));
counter++;
console.log(counter);
}
}
increment();
使用 Date 对象计算时间
如果需要更精确的时间控制,可以使用 Date 对象计算时间间隔。
let counter = 0;
let lastTime = new Date().getTime();
function increment() {
const currentTime = new Date().getTime();
if (currentTime - lastTime >= 1000) {
counter++;
console.log(counter);
lastTime = currentTime;
}
requestAnimationFrame(increment);
}
increment();
注意事项
setInterval和setTimeout的时间间隔并不是绝对精确的,可能会受到浏览器或系统性能的影响。- 如果需要停止递增,记得调用
clearInterval或clearTimeout来清除定时器。 requestAnimationFrame通常用于动画场景,但也可以用于实现周期性任务。






