防抖是事件停止触发一段时间后执行一次,适合搜索输入等只关心最终结果的场景;节流是固定时间间隔最多执行一次,适合滚动监听等需稳定节奏的场景。

防抖(Debounce)和节流(Throttle)是处理高频事件(如 resize、scroll、input、mousemove)的两种核心策略,目的都是减少函数实际执行次数,避免性能浪费或卡顿。
防抖的逻辑是:**只要事件持续触发,就不断重置定时器;只有停止触发一段时间后,才真正执行一次函数。** 适合用于“只关心最终结果”的场景,比如搜索框输入联想、窗口大小调整后的布局重排。
clearTimeout 上一个定时器,再新建一个节流的逻辑是:**无论事件触发多频繁,函数最多每隔固定时间执行一次。** 适合需要“稳定节奏响应”的场景,比如滚动监听加载更多、鼠标移动轨迹采样。
一句话判断:
立即学习“Java免费学习笔记(深入)”;
防抖(带立即执行可选):
function debounce(fn, delay, immediate = false) {
let timer = null;
return function(...args) {
if (immediate && !timer) fn.apply(this, args);
clearTimeout(timer);
timer = setTimeout(() => {
if (!immediate) fn.apply(this, args);
timer = null;
}, delay);
};
}节流(时间戳版,首次立即):
function throttle(fn, limit) {
let last = 0;
return function(...args) {
const now = Date.now();
if (now - last >= limit) {
fn.apply(this, args);
last = now;
}
};
}绑定事件时直接包装即可:element.addEventListener('scroll', throttle(handleScroll, 100))
基本上就这些。不复杂,但容易忽略——尤其在移动端 touchmove 或 input 输入场景下,加一层防抖/节流,页面流畅度常能明显提升。
以上就是javascript防抖和节流是什么_如何优化高频触发的事件?的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号