JS的防抖

148 阅读1分钟

最近面试遇到一个问题,什么防抖,哎,妈呀,被问到了。赶紧回去看看。 简单来说:

在事件被触发的n秒内,如果这n秒内又被触发了,则重新计时

// 代码实现
function debounce(fun,deplay){
 let time;
 // return 一个函数出去,在函数内引用了time该变量,这里形成了一个闭包。
 return function (args){
    clearTimeout(time);
    // setTimeout的返回值是一个正整数,表示定时器的编号
    time = setTimeout(() =>{
    // 这里的this指向外层的作用域
     fun.call(this,args);
    },deplay)
  }
}