javaScript定时器核心是setTimeout(延迟执行一次)和setInterval(按间隔重复执行),二者均返回可清除的ID,需手动清理以防内存泄漏;setTimeout适用于延时操作,setInterval适用于轮询等,但函数耗时超间隔时可能堆积。

javascript 中的定时器是控制代码在特定时间点或按固定间隔执行的机制,核心就两个:setTimeout 和 setInterval。
setTimeout:延迟执行一次
它让一段代码在指定毫秒数后运行,只跑一次。适合做延时提示、防抖、初始化延迟加载等。
- 基本写法:setTimeout(函数, 毫秒数),比如
setTimeout(() => console.log("3秒后见"), 3000) - 可以传参:直接把参数写在毫秒数后面,
setTimeout(greet, 2000, "小李"),函数里就能收到 “小李” - 记得存 ID:用变量接住返回值,比如
const timer = setTimeout(...),后续可用clearTimeout(timer)取消 - 注意:毫秒单位,2000 就是 2 秒;实际执行可能略晚一点,不保证绝对精准
setInterval:每隔一段时间重复执行
它会按设定间隔反复调用函数,比如每秒刷新倒计时、轮询接口、动画帧更新等。
- 基本写法:setInterval(函数, 毫秒数),例如
setInterval(() => console.log("滴"), 1000) - 同样支持传参:
setInterval(show, 1500, "当前状态", 1) - 必须手动停止:否则一直跑,容易卡顿或内存泄漏。用
clearInterval(id)关停,常见做法是加条件判断后主动清除 - 返回值也是数字 ID,和 setTimeout 一样,用来清除
关键区别和使用提醒
- setTimeout 是“等一等再干一次”,setInterval 是“干完再等,循环往复”
- 两者都返回定时器 ID,不存 ID 就没法取消,尤其 setInterval 忘关很危险
- 如果函数执行耗时超过设定间隔,setInterval 不会跳过或排队,而是“尽快执行下一次”,可能造成堆积
- 需要精确节奏(如动画)时,更推荐 requestAnimationFrame,而不是 setInterval
基本上就这些。用对场景、记得清理,定时器就很可靠。
立即学习“Java免费学习笔记(深入)”;