function deBounce(fn, delay) {
let timer = null; //这里巧妙地运用了闭包的特性,使得timer不仅不会被销毁,并且避免了每次都初始化一遍
return function (e) {
if (timer) {
clearTimeout(timer); //若之前的定时器还在,则清空之前的定时器
}
timer = setTimeout(() => {
fn.call(this, e); //调用函数也用了闭包,并且使得this指向input,并且接收事件对象作为参数
}, delay); //运用闭包,添加一个新的定时器,时间可自定,
};
}
相关文章
- 10-16函数防抖和函数节流
- 10-16函数防抖
- 10-16函数防抖、节流
- 10-16详解防抖函数(debounce)和节流函数(throttle)
- 10-16防抖函数在主页中的使用
- 10-16debounce防抖和throttle节流
- 10-16js防抖和节流
- 10-16事件的节流(throttle)与防抖(debounce)
- 10-16函数防抖,函数节流
- 10-16函数防抖、节流