为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这样写debounce就会执行最后一次mouseenter

if (timer) {

clearTimeout(timer)

}


...

timer = null

...

正在回答

1 回答

其实就是判断在定时器延迟时间内定义的事件如果再次被触发就清除掉上一次定时器再重新定义一个计时器。
结尾timer=null是为了把延迟事件执行结束后清空timer变量,它并不影响if里面的判断,因为你在延迟时间内触发
事件时定时器的代码还没有被执行。也就是说之前定义timer仍然为不为null。只有在执行过后它才是null。


1 回复 有任何疑惑可以回复我~
#1

为了前端

在清楚timer之前用conso.log()打印timer,触发事件会发现timer从undefined 变为null .变为快速滑到其他li时,会从null变为数字 1 2 3 4 5等连续下去。请问这个数字代表什么呢?
2019-12-16 回复 有任何疑惑可以回复我~
#2

为了前端

准确的说,if判断力面的条件是什么呢??
2019-12-16 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么这样写debounce就会执行最后一次mouseenter

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信