js的防抖和节流

1.防抖动

停止抖动,保证执行一次

// 防抖动
      function a(fnwait){
        let t = null;
        return function () {
          if (t !== nullclearTimeout(t);
// 下面在执行的时候等待1000s的时候  会将这个自动去除    
          t = setTimeout(fnwait);
        }
      }
      // fn是函数 wait是延迟执行的时间

这里就达到了效果,当用户停止点击或者移动的时候,这个才会执行一次

2.节流

节流的话是保持抖动的过程中,以一定时间延迟来执行函数运行

两种方式来处理:时间戳、定时器

// 节流 一种是时间戳  也就是现在这样  一种是定时器
      function a(fndelay){
        let b = Date.now(); // 闭包中父函数的变量一直存在,也就是说b是一直存在着的 所以后面的覆盖才显得尤为重要
        return function () {
          let c = Date.now();
          if (c-b>= delay) {
            fn();
            //fn.apply(this,arguments);
            b = Date.now(); // 上一次结束的时间
          }
        }
      }

 

补充:这里描述一下函数的闭包行为,函数内父函数会将父函数的变量一直保存在内存当中,因为不知道子函数到底引用了没有,这是js特有的闭包行为。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值