这是一段防抖代码,为什么会出现不同的结果?-灵析社区

复古直男

问题出在递归上。如果你那个不是递归的话,其实是防抖了的。 ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250105/163d2ead138901ba75834ba2645c92bd.png) 注意看上面红圈处的 `func.apply(context, args)`,这是个**同步方法** ,它执行的是什么?执行的你下面红圈处的递归,也就是又调用了一遍自身,又从头走了一遍箭头处的判断。 而此时下面黄圈处那句 `timeout = setTimeout(...)` 根本还没开始执行呢,所以 `notCalled` 始终成立,自然 `func.apply(context, args)` 会执行多次。

阅读量:1

点赞量:0

问AI