前端笔试题4:函数防抖和节流
一:函数防抖
防抖:函数防抖就是让一个持续触发执行的函数,通过函数防抖等最后一次触发结束之后的一段时间之后,再去执行
- 持续触发不执行
现在变成持续触发,清除定时器,定时器的回调就不会执行
- 不触发的一段时间之后再执行
设置定时器,定时器调用我们要执行的函数;
将目标函数作为回调(func)传进去,等待一段时间过后执行目标函数
function debounce(func, delay) {
let timeout
return function() {
clearTimeout(timeout)
timeout = setTimeout(() =>{
func.apply(this, arguments)
},delay)
}
}
二:函数节流
函数节流:节流就是让函数有节制的执行,而不是毫无节制的触发一次就执行一次;指在一段时间内,只执行一次
- 持续触发并不会执行多次
做到控制执行的时机,通过一个开关,与定时器setTimeout结合完成
- 到一定时间再去执行
函数执行的前提是开关打开,等待时间就是通过定时器setTimeout实现
function throttle(func, delay) {
let run = true
return function() {
if(!run) {
return
}
run = false // 持续触发的话,run一直是false,就会停在上边的判断那里
setTimeout(() => {
func.apply(this, arguments)
run = true // 定时器到时间之后,会把开关打开,我们的函数就会执行
},delay)
}
}
原文来自知乎https://zhuanlan.zhihu.com/p/72923073
本文出现的代码都是自学,然后整理出来的
本人属于入门前端不久的小白,所以代码仅供参考!!!
有错误的欢迎指正,感谢