javascriptfunction throttle(fn, gap) {
let last = 0;
return function (...args) {
const t = Date.now();
if (t - last >= gap) { last = t; fn.apply(this, args); }
};
}适用场景:高频触发但希望按固定间隔执行的交互,如滚动时计算吸顶状态、拖拽时同步坐标,避免每一帧都跑重逻辑。
用法示例:
js// scroll 触发很密,限制为每 200ms 最多执行一次,减少布局计算压力
window.addEventListener("scroll", throttle(updateSticky, 200));参数与返回:fn: Function 实际执行函数;gap: number 最小执行间隔,单位毫秒。返回包装后的函数,会保留调用时的 this 和参数。
常见坑:此实现只有“立即执行”,停止触发前的最后一次不会补执行;如果需要拖拽结束后同步最终状态,要改成带 trailing 的节流。

扫码关注「前端达人」,干货代码每周更新