防抖和节流

防抖:在一定时间范围内函数只执行一次,而且执行的是最后一次触发的该函数

    // 防抖函数
    function debounce(fn, delay) {
      // 通过闭包共享变量
      let timer = null
      return function () {
        if (timer) {
          clearTimeout(timer)
        }
        timer = setTimeout(fn, delay)
      }
    }

节流:在指定时间间隔内执行某一函数,时间间隔外即使触发也不执行该函数

    // 节流函数
    function throttle(fn, delay) {
      let timer = null
      // 默认阀门开启,可以正常执行
      let isClose = false
      return function () {
        if (isClose) {
          return false
        }
        isClose = true
        timer = setTimeout(() => {
          fn()
          isClose = false
        }, delay)
      }
    }

你可能感兴趣的:(防抖和节流)