最近面试遇到一个问题,什么防抖,哎,妈呀,被问到了。赶紧回去看看。 简单来说:
在事件被触发的n秒内,如果这n秒内又被触发了,则重新计时
// 代码实现
function debounce(fun,deplay){
let time;
// return 一个函数出去,在函数内引用了time该变量,这里形成了一个闭包。
return function (args){
clearTimeout(time);
// setTimeout的返回值是一个正整数,表示定时器的编号
time = setTimeout(() =>{
// 这里的this指向外层的作用域
fun.call(this,args);
},deplay)
}
}