Javascript对象中关于setTimeout和setInterval的介绍


在JavaScript中,`setTimeout` 和 `setInterval` 是两个非常常用的全局函数,它们用于在指定的延迟后执行代码,但它们在执行方式上有所不同。

### setTimeout

`setTimeout` 函数用于在指定的毫秒数后执行一次函数或计算表达式。其基本语法如下:


let timerId = setTimeout(function() {
  // 要执行的代码
}, delay);

// 或者使用箭头函数
let timerId = setTimeout(() => {
  // 要执行的代码
}, delay);

- `function` 或 `() => {...}` 是当延迟时间过后需要执行的函数。

- `delay` 是延迟的毫秒数(1秒=1000毫秒)。

- `timerId` 是返回的定时器ID,可以用于之后取消定时器(使用 `clearTimeout(timerId)`)。

### setInterval

`setInterval` 函数则用于重复调用函数或执行代码片段,每隔指定的周期(以毫秒计)。其基本语法如下:


let intervalId = setInterval(function() {
  // 要周期性执行的代码
}, period);

// 或者使用箭头函数
let intervalId = setInterval(() => {
  // 要周期性执行的代码
}, period);

- `function` 或 `() => {...}` 是每隔一段时间需要重复执行的函数。

- `period` 是时间间隔的毫秒数。

- `intervalId` 是返回的间隔ID,可以用于之后取消间隔重复执行(使用 `clearInterval(intervalId)`)。

### 区别与注意事项

- **执行次数**:`setTimeout` 只执行一次,而 `setInterval` 会一直重复执行,直到被 `clearInterval` 取消。

- **内存与性能**:由于 `setInterval` 可能会无限次执行,如果执行的任务需要很长时间,或者执行间隔非常短,可能会导致页面卡顿或性能问题。在这种情况下,考虑使用 `setTimeout` 在任务完成后重新设定自己,形成“伪间隔”。

- **清理定时器**:无论使用 `setTimeout` 还是 `setInterval`,当它们不再需要时,应该使用 `clearTimeout` 或 `clearInterval` 清理它们,避免潜在的内存泄漏问题。

以上是对 `setTimeout` 和 `setInterval` 的基本介绍和使用方法的简述。