本文主要是介绍JS 手写 节流throttle 防抖debounce函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
防抖debounce
// 手写防抖
function debounce(fn, delay = 200) {// timer 在闭包中let timer = null// 返回一个函数return function(...args) {if (timer) {clearTimeout(timer) // 清空上次的值}timer = setTimeout(() => {fn.apply(this, args) // 透传 this 和函数参数}, delay)}
}
节流throttle
// 手写节流
function throttle(fn, delay = 100) {// timger 在闭包中let timer = null// 返回一个函数return function(...args){ // 当我们发现这个定时器存在时,则表示定时器已经在运行中,还没到该触发的时候,则 returnif (timer) {return}// 定时器不存在了,说明已经触发过了,重新计时timer = setTimeout(()=>{fn.apply(this, args) // 透传 this 和返回函数的参数,因为event传递给了throttle返回的函数timer = null}, delay)}
}
这篇关于JS 手写 节流throttle 防抖debounce函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!