作者简介:大家好,我是Taro,前端领域创作者
✒️ 个人主页:唐璜Taro
支持我:点赞+ 评论 + ⭐️收藏
作者简介:大家好,我是Taro,前端领域创作者
✒️ 个人主页:唐璜Taro
支持我:点赞+ 评论 + ⭐️收藏
在JS防抖、节流实现过程中,返回一个函数是为了让其具有更好的通用性和灵活性
提示:以下是本篇文章正文内容,下面案例可供参考
防抖是一种性能优化方法,它可以有效的减少因为函数被频繁调用,从而导致的性能上的消耗
function debounce (fn, delay) {
let timer = null
const _debounce = function () {
if (timer) clearTimeout(timer)
timer = setTimeout(() => {
fn()
}, delay)
}
return _debounce
}
this 指向
问题
function debounce (fn, delay) {
let timer = null
const _debounce = function () {
if (timer) clearTimeout(timer)
const context = this;
const args = arguments;//ES5
timer = setTimeout(() => {
fn.apply(context, args)
}, delay)
}
return _debounce
}
下面是一个例子,展示如何使用返回的函数:
function handleClick() {
console.log('clicked')
}
const debouncedClick = debounce(handleClick, 1000)
window.addEventListener('click', debouncedClick)
在这个例子中,我们定义了一个点击事件处理函数 handleClick,并使用 debounce 函数创建了一个新的函数 debouncedClick。然后,我们将 debouncedClick 作为 click 事件的回调函数,从而实现了防抖效果。
代码如下(示例):
提示:这里对文章进行总结: