关于定时器的两个小疑问
来源:16-8 手写防抖 debounce

Harby_C
2020-04-08
老师你好,关于这里的定时器的两个小疑问
1.就算在函数执行里面设置了timer=null,console.log(timer)依然是一个非null的值,所以设置timer=null,其实是不起作用的(当然从声明变量避免变量污染角度来说也是可以这样做的,但这样的话平时我们声明的变量都要手动释放吗,比如input1就没设置为null)。
2.timer其实可以不用判断存不存在,直接使用clearTimeout(timer),毕竟只有第一次进来的时候timer不存在
所以直接这样行不行:
let timer = null;
input1.addEventListener(‘input’, () => {
clearTimeout(timer);
timer = setTimeout(() => {
// …
}, 1000);
});
写回答
1回答
-
双越
2020-04-08
第一,timer 声明时,可以不赋值为 null ,没关系。
第二,不判断,直接 clearTimeout 也可以的,没问题。
00
相似问题