老师,我有一个疑问,在防抖的代码中,为什么最后还需要把timer赋值为空呢?我尝试了不加这句话和加上这句话的效果是一样的,想问一下这个的含义。
//防抖
function debounce(fn, delay = 500) {
//timer是在闭包中的
let timer = null
return function() {
if(timer) {
clearTimeout(timer)
//清空定时器 这一步为什么需要再次将timer赋值为空呢?
timer = null
}
timer = setTimeout(() => {
//使得传入的回调函数的this指向input这个元素对象
fn.apply(this, arguments)
}, delay)
}
}