防抖函数:
function debounce(fn, delay) {
// 用于存储定时器的标识
let timer = null;
// 返回一个新的函数,这个函数会对原函数进行防抖处理
return function(...args) {
// 保存当前this上下文,确保fn执行时this指向正确
const context = this;
// 如果已经存在定时器,清除它(重置计时)
if (timer) {
clearTimeout(timer);
}
// 重新设置定时器,delay毫秒后执行原函数
timer = setTimeout(() => {
// 执行原函数,并传递正确的this和参数
fn.apply(context, args);
// 执行完成后清空定时器标识
timer = null;
}, delay);
};
}