JS 实现防抖

一定的时间间隔内反复触发任务,直接清除上一次任务,始终执行最后一次任务

function debounce(fn, interval) {
  let timer = null;

  return function () {
    if (timer) clearTimeout(timer);
    timer = setTimeout(() => {
      fn.apply(this);
    }, interval);
  };
}
function log() {
  console.log(document.documentElement.scrollTop);
}

window.addEventListener('scroll', throttle(log, 2000));