返回

不要再害怕 JavaScript 中的函数防抖和函数节流了!立即掌握此技能!

前端

函数防抖和函数节流:让您的 JavaScript 代码更加高效!

在 JavaScript 中,函数防抖和函数节流都是非常有用的技术,可以帮助您优化事件处理程序,提高代码性能和响应速度。

函数防抖

函数防抖可以防止一个函数被过快地重复调用。当您在 JavaScript 中处理事件时,可能会遇到这种情况,例如当您在文本框中输入文字时,您希望在用户停止输入后才执行某些操作,而不是在每次按键时都执行。函数防抖可以帮助您实现这一点。

函数防抖的原理是,它会创建一个定时器。当您调用一个函数时,定时器就会启动。如果在定时器到期之前您再次调用这个函数,那么定时器就会重新启动。只有当定时器到期后,函数才会真正执行。

函数节流

函数节流与函数防抖类似,但它允许一个函数在一段时间内只执行一次。这意味着,即使您在一段时间内多次调用这个函数,它也只会执行一次。

函数节流的原理是,它会创建一个令牌。当您调用一个函数时,如果令牌可用,那么函数就会执行。如果令牌不可用,那么函数就会被阻止执行。令牌会在一段时间后自动恢复可用。

应用场景

函数防抖和函数节流可以应用于各种场景,包括:

  • 表单验证
  • 搜索建议
  • 无限滚动
  • 窗口大小改变
  • 鼠标移动

实现方法

在 JavaScript 中,您可以使用 lodash 或 Underscore 等库来实现函数防抖和函数节流。您也可以自己实现这两个函数。

自己实现函数防抖和函数节流

// 函数防抖
function debounce(func, wait) {
  let timer;
  return function(...args) {
    if (timer) {
      clearTimeout(timer);
    }
    timer = setTimeout(() => {
      func.apply(this, args);
    }, wait);
  };
}

// 函数节流
function throttle(func, wait) {
  let token = true;
  return function(...args) {
    if (token) {
      token = false;
      setTimeout(() => {
        func.apply(this, args);
        token = true;
      }, wait);
    }
  };
}

结语

函数防抖和函数节流都是非常有用的技术,可以帮助您优化 JavaScript 代码。掌握这两个技术可以使您的代码更加高效和响应速度更快。