`setTimeout()` 和 `setInterval()` 是 JavaScript 中常用的两个定时器方法,它们之间有一些关键的区别:
### setTimeout()
- **定义**:`setTimeout()` 方法用于在指定的毫秒数后调用函数或计算表达式。
- **行为**:该方法只执行一次指定的函数。一旦执行完成,定时器就停止了。
- **使用场景**:适用于需要延迟执行某些操作,但只执行一次的场景。
- **语法**:`setTimeout(function, milliseconds, param1, param2, ...)`
### setInterval()
- **定义**:`setInterval()` 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。
- **行为**:该方法会不停地调用函数,直到 `clearInterval()` 被调用或窗口被关闭。
- **使用场景**:适用于需要重复执行某些操作的场景,如动画、轮询等。
- **语法**:`setInterval(function, milliseconds, param1, param2, ...)`
### 区别总结
1. **执行次数**:`setTimeout()` 执行一次后停止;`setInterval()` 会持续重复执行,直到被清除。
2. **应用场景**:`setTimeout()` 适用于延迟执行单次任务;`setInterval()` 适用于周期性重复执行的任务。
3. **停止方式**:两者都可以通过调用 `clearTimeout()` 和 `clearInterval()` 方法来停止执行,但 `setTimeout()` 通常不需要手动停止,因为它本身就是一次性的。
示例代码:
// 使用 setTimeout
setTimeout(function() {
console.log('这条信息将在3秒后显示');
}, 3000);
// 使用 setInterval
let intervalId = setInterval(function() {
console.log('这条信息会每隔2秒显示一次');
}, 2000);
// 假设在5秒后停止 setInterval
setTimeout(function() {
clearInterval(intervalId);
console.log('定时器已停止');
}, 5000);