js防抖和节流实现

//写防抖(一段时间内,多次触发,只执行最后一次)
//用延时器实现
function debunce(fn,delay){
  var timer = null
  return function(){
    //清楚上一次延时器,关键,可以终止多次触发的动作
    clearTimeout(timer)
    //重新设置新的延时器
    timer = setTimeout(function(){
      fn.apply(this)
    },delay)
  }
}

//写节流(触发以一次后,要过一段时间才能触发第二次)
//用new Date()实现
function throttle(fn,delay){
  //记录他上一次触发的事件
  var lastTime = 0;
  return function(){
    var nowTime = Date.now();
    if(nowTime-lastTime > delay){
      fn();
      lastTime = nowTime;
    }
  }
}

你可能感兴趣的:(刷题系列)