防抖是事件停止触发一段时间后执行一次,节流是按固定间隔最多执行一次;二者均通过限制高频事件回调次数来减少计算、DOM操作和请求,提升性能。
防抖(Debounce)和节流(Throttle)是 JavaScript 中两种常用的函数执行控制技术,核心作用是减少高频事件(如 resize、scroll、input、mousemove)触发的函数调用次数,从而避免不必要的计算、DOM 操作或请求,显著提升页面响应速度和运行效率。
防抖的逻辑是:只要事件持续触发,就不断重置定时器;只有当事件停止触发一段时间(比如 300ms)后,才真正执行一次函数。
节流的逻辑是:无论事件触发多频繁,函数都按固定时间间隔(比如每 100ms)最多执行一次。
高频事件若不做限制,可能在 1 秒内触发几十甚至上百次回调,带来明显负担:
)加了防抖或节流后,实际执行次数可能降到个位数,CPU 和网络压力大幅下降,用户体验更顺滑。
基本上就这些。不复杂,但容易忽略——尤其在写交互效果时随手绑个 onscroll 就跑全量逻辑,性能隐患往往从这里开始。