去抖函数 节流函数
去抖函数:
function qudou(cb){
console.log('uuuuuuuuu')
var timer=null;
return function(){
console.log(timer)
clearTimeout(timer)
timer = setTimeout(function(){
cb()
},1000);
}
}
function test(){
console.log(8888)
}
document.getElementById('btn').addEventListener('click',qudou(test))
为什么这么写,而不是
document.getElementById('btn').addEventListener('click',function(){
qudou(test)()
})
把代码复制过去,跑一下就知道了。这里的知识点:闭包。必须把timer设置为全局变量,否则clearTimeout每次清除的都将是函数内部本次的settimeout,而不是上一次的。(上面代码不是用的全局变量,用的闭包代替)
节流函数
function jieliu(cb){
console.log('uuuuuuuuu')
var bTime = new Date();
return function(){
current = new Date()
if(current-bTime>=1000){
bTime = current;
cb()
}
}
}
function test(){
console.log('kkkk')
}
document.getElementById('btn').onclick = jieliu(test);
浙公网安备 33010602011771号