防抖:指的是触发事件后的n秒内函数只执行一次,若在n秒内再次触发则以再次触发的时间为基准重新计算。比如我点击一共按钮,2秒后调用函数,在1秒时又点击了,这时就是从1秒时重新开始计算。

 function debounce() {
      let timer = null;

      return () => {
        if (timer) {
          clearTimeout(timer);
        }

        timer = setTimeout(() => {
          console.log("防抖测试");
        }, 500);
      };
    }

节流:连续发生的事件在n秒内只执行一次函数。也就是无论我在n秒触发几次事件,函数都会在n秒后进行一次调用。

 

 function throttle() {
      let flag = true;

      return () => {
        if (!flag) return;

        flag = false;

        setTimeout(() => {
          console.log("节流测试");
          flag = true;
        }, 1000);
      };
    
    }