防抖
function debounce(func,delay){ //需要两个参数
let timer //外围定义定时器变量
return function(){
let context=this //保存this指向
let args=arguments
clearTimeout(timer) //清除定时器
timer = setTimeout(function(){ //设置定时
func.apply(context,args)
},delay)
}
}
节流
function throttle(func,delay){ //函数需要两个参数
let pre=0 //定义一个变量
return function(){
let now=new Date() //获取当前时间对象
if(now-pre>delay){ //判断时间差是否大于延时
func() //执行函数
pre =now //将现在的时间赋值给pre,相当于重新计时
}
}
}
function throttle2 (func,delay){ //函数需要两个参数
let timer //外围定义一个定时器变量
return function(){
let context = this //保存this指向
let args = arguments //同理
if(timer){ //如果在时间范围内直接返回
return
}
timer = setTimeout(function(){ //重新开始计时
func.apply(context,args)
timer=null
},delay)
}
}