请问每次里面清除的 timer,是上一次 debounce 创建的吗?

来源:4-5 -防抖和节流有什么区别,分别用于什么场景-防抖

Neolu4ever

2023-02-04

老师您好,我的疑惑在于两点:

  1. 每次执行一个动作时,都会执行 debounce 函数,但是实际上是执行 debounce 函数返回的那个函数才对是吗?这个是否是一种 event loop 特有的区别于一般回调函数调用的方式:回调函数会自动执行目标函数以及里面返回的函数。

  2. debounce 函数每次执行时,都会在内存里创建一个 timer 变量,并且在返回的函数中,因为闭包被持续引用。那么在下一次在执行 debounce 的时候,一个新的 timer 应该被创建了,那么这时 if 判断以及被 clearTimeout 清除的 timer 是上一轮被创建的那个吗?如果是,我不太理解为什么这个变量可以在闭包以外的作用域被继续引用。

望老师解惑,谢谢!

写回答

1回答

双越

2023-02-05

没懂你的问题。timer 是函数内部的,怎么会被外部引用呢?

0
0

2周刷完100道前端优质面试真题 双越最新力作

『前端面试真题100道』视频详解

1509 学习 · 642 问题

查看课程