不太理解timer = null的含义

来源:16-8 手写防抖 debounce

起飞啊飞

2022-08-26

老师,我有一个疑问,在防抖的代码中,为什么最后还需要把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)
    }
}
写回答

1回答

双越

2022-08-26

就是个初始化,直接写 let timer 不赋值 null 也没问题。


0
0

一天时间高效准备前端技术一面 匹配大厂面试要求

针对时下面试高频考点,帮助新人js面试快速通关

4729 学习 · 1685 问题

查看课程