JavaScript系列-防抖

185 阅读2分钟

面试了许多求职者,很多求职者只知其然,而不知所以然,写此文章为广大前端小伙伴指引迷津。纯干货!纯干货!纯干货!

目录

防抖

什么是防抖?

答:短时间大量触发事件,只会触发一次事件。

防抖的作用?

答:实现减少触发的频率,又不影响用户体验。

防抖的实现原理?

答:借助setTimeout实现,为了不影响全局环境,利用闭包设置一个变量保存计时器。

防抖的使用场景?

答:搜索框的请求优化等。

防抖的缺陷?

答:大量使用会导致内存泄漏

防抖的笔试题?
// 手写一个防抖函数
function debounce (fn, delay) {
  // 利用闭包保存定时器
  let timer = null
  return function () {
    let self = this, arg = arguments
    // 在规定时间内再次触发会先清除定时器后再重设定时器
    if(timer) clearTimeout(timer)
    timer = setTimeout(() => {
      fn.apply(self, arg)
    }, delay)
  }
}
面试大白话

答:首先,防抖短时间大量触发事件,只会执行一次。其主要目的也是为了减少触发频率,又不影响用户体验。它的原理就是借助setTimeout实现,为了不影响全局环境,利用闭包设置一个变量保存计时器。我们项目里面一般就是搜索框的请求优化等。不过闭包用的太多,会导致内存泄漏。

小白也是新手面试官,欢迎领导莅临指导工作,提出建议,小白不胜感激,不喜勿喷,点赞收藏随机送程序媛小姐姐一枚哦!!!