关于节流和防抖的定时器中timer设为null?
来源:11-2 事件绑定和事件冒泡

慕用0863198
2020-02-06
// 节流函数
export const throttle = (func, delay = 100) => {
let timer = null;
return function (…args) {
if(timer) {
return
}
timer = setTimeout(() => {
func.apply(this, args)
timer = null
}, delay)
}
}
// 防抖函数
export const debounce = (func, delay = 200) => {
let timer = null
return function (…args) {
timer && clearTimeout(timer);
timer = setTimeout(() => {
func.apply(this, args)
timer = null
}, delay);
};
};
请问在节流和防抖的settimeout中为什么要设置timer = null,这样设置的话在函数一开始对timer的判断岂不是没有意义,会每次都执行settimeout这个函数
写回答
1回答
-
let timer = null; 和 let timer; 是一样的啊,只不过后者是 unndefined 。
timer 在后面会被赋值的,不会一直是 null 。你可以在 if(timer) 前面加一行 console.log(timer),然后执行看一下。应该就能清晰很多。
132020-02-06
相似问题