函数节流:
一个函数执行一次后,只有大于设定的执行周期后才会执行第二次
-有一个需要频繁触发函数,出于优化的角度,在规定的时间内,只让函数触发的第一次生效,后面不生效
/**
*
* @param {要被节流的函数} delay
* @param {规定的时间} fn
*/
function throttle(fn,delay){
//记录函数上一次触发的时间
let lastTime=0;
// 利用闭包的原理,内部函数引用lastTime,lastTime不会被初始化为0
// 下一次执行的是返回的函数,它引用lastTime
return function(){
let nowTime=Date.now();
if(nowTime-lastTime>delay){
fn()//让函数执行
// 同步时间
lastTime=nowTime
}
}
}
// 使用
document.onscroll=throttle(function(){
//做具体的操作
},1000)