函数节流与函数防抖?

最近在学习js的时候,遇到了函数节流与函数防抖,一开始听说了也很懵,明白了原理之后才知道是换汤不换药,加了个好听的名字,我们平时肯定也用到了,下面来进行详细说明:

函数节流:一个函数在执行一次之后,只有大于设定的执行周期之后才会执行第二次。

我们也可以这样理解,当某个函数需要频繁触发,这样必定会影响性能,所以在规定时间内,只让函数触发的第一次生效,后面的都不生效。

function throttle (fn, delay) {
  var lastTime = 0; // 记录上一次触发的时间
  return function () {
    var nowTime = Date.now(); // 记录当前函数触发的时间
    if (nowTime - lastTime > delay) {
      fn.call(this);  // 修正this指向问题
      lastTime = nowTime;  //同步时间
    }
  }
}

 

函数防抖:一个需要频繁触发的函数,在规定时间之内,只让最后一次生效,前面的不生效

function debounce (fn, delay) {
  var timer = null;
  return function () {
    // 一开始先清除延时器,然后再重新设置延时器
    clearTimeout(timer);
    timer = setTimeout(function () {
      fn.apply(this);
    }, delay);
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值