js防抖和节流的区别
js防抖和节流的主要区别如下:
1. 防抖(debounce):防抖主要是为了在连续触发事件时,只执行最后一次点击。它是通过设置一个定时器,每次触发事件时,清空定时器,然后重新设置定时器。如果在定时器时间内再次触发事件,则重新计算时间。防抖适合用在resize,scroll,input输入等场景。
2. 节流(throttle):节流主要是为了在连续触发事件时,每隔一段时间执行一次。它是通过设置一个固定时间长度,固定时长执行一次函数。多次触发不会执行,只有在规定时间内才会执行。节流适合用在mousemove等场景。
两者都是为了限制函数的执行频次,以优化函数触发频率过高导致的响应速度跟不上触发频率,出现延迟,假死或卡顿的现象。