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