js定时器settimeout

setTimeout用于延迟执行函数,语法为setTimeout(function, delay, params),可配合clearTimeout取消,常用于延时操作如提示、防抖等。

在JavaScript中,setTimeout 是一个用于延迟执行代码的定时器函数。它可以让指定的函数或代码片段在等待一定时间后执行一次,常用于实现延时操作,比如延迟提示、防抖、页面跳转倒计时等场景。

基本语法

setTimeout(function, delay, param1, param2, ...)

  • function:要执行的函数
  • delay:延迟时间,单位是毫秒(ms)
  • param1, param2, ...:传递给函数的参数(可选)

也可以传入字符串形式的代码(不推荐):

setTimeout("console.log('Hello')", 1000);

常见用法示例

1. 延迟执行函数

function sayHello() {
  console.log("你好,1秒后出现");
}
setTimeout(sayHello, 1000);

2. 传递参数

function greet(name, age) {
  console.log(`你好 ${name},你 ${age} 岁了`);
}
setTimeout(greet, 1500, "小明", 20);

3. 使用箭头函数

setTimeout(() => {
  console.log("3秒后执行");
}, 3000);

清除定时器

如果想取消还未执行的 setTimeout,可以使用 clearTimeout,需要保存定时器的返回值。

const timerId = setTimeout(() => {
  console.log("这不会执行");
}, 2000);

// 在2秒内执行下面这行,就能取消
clearTimeout(timerId);

注意:一旦定时器触发,clearTimeout 就无效了。

注意事项

  • setTimeout 的延迟时间是最小延迟,不是精确时间。如果主线程繁忙,实际执行会延迟。
  • 它只执行一次,如果需要重复执行,应使用 setInterval 或递归调用 setTimeout。
  • 在对象方法中使用时注意 this 指向,建议用箭头函数或 bind 绑定上下文。
基本上就这些,setTimeout 是前端开发中最基础也最常用的异步工具之一,掌握它对理解 JavaScript 的事件循环机制也有帮助。