请问每次里面清除的 timer,是上一次 debounce 创建的吗?
来源:4-5 -防抖和节流有什么区别,分别用于什么场景-防抖
Neolu4ever
2023-02-04
老师您好,我的疑惑在于两点:
-
每次执行一个动作时,都会执行 debounce 函数,但是实际上是执行 debounce 函数返回的那个函数才对是吗?这个是否是一种 event loop 特有的区别于一般回调函数调用的方式:回调函数会自动执行目标函数以及里面返回的函数。
-
debounce 函数每次执行时,都会在内存里创建一个 timer 变量,并且在返回的函数中,因为闭包被持续引用。那么在下一次在执行 debounce 的时候,一个新的 timer 应该被创建了,那么这时 if 判断以及被 clearTimeout 清除的 timer 是上一轮被创建的那个吗?如果是,我不太理解为什么这个变量可以在闭包以外的作用域被继续引用。
望老师解惑,谢谢!
写回答
1回答
-
双越
2023-02-05
没懂你的问题。timer 是函数内部的,怎么会被外部引用呢?
00
相似问题