防抖函数: 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); }; }