settimeout和setinterval区别
1. setTimeout:单次延迟执行
语法:
const timeoutId = setTimeout(callback, delay, arg1, arg2, ...);
核心功能:在指定的 delay(毫秒)后,执行一次 callback 函数。
参数:
- callback:待执行的函数(支持匿名函数、具名函数或箭头函数)。
- delay:延迟时间(最小延迟受浏览器限制,通常为 4ms)。
- arg1, arg2...(可选):传递给 callback 的参数(ES5+ 支持)。
返回值:唯一的 timeoutId,用于通过 clearTimeout(timeoutId) 取消未执行的定时器。
示例:3 秒后打印日志
const timeoutId = setTimeout(() => {console.log(`当前时间:${new Date().toLocaleTimeString()}`);
}, 3000);// 取消定时器(在3秒内调用)
// clearTimeout(timeoutId);
2.setInterval:周期性重复执行
语法:
const intervalId = setInterval(callback, delay, arg1, arg2, ...);
核心功能:以固定的 delay 为间隔,重复执行 callback,直至通过 clearInterval(intervalId) 停止。
参数:与 setTimeout 一致,但 callback 会周期性执行。
返回值:唯一的 intervalId,用于取消定时器。
示例:每秒打印当前时间
const intervalId = setInterval(() => {console.log(`当前时间:${new Date().toLocaleTimeString()}`);
}, 1000);// 5秒后停止定时器
setTimeout(() => clearInterval(intervalId), 5000);