# JavaScript如何實現函數防抖
## 什么是函數防抖?
函數防抖(Debounce)是一種優化高頻觸發事件的技術,其核心思想是:**在事件被頻繁觸發時,只有當事件停止觸發一段時間后,才會真正執行處理函數**。例如搜索框輸入聯想、窗口resize事件等場景。
## 實現原理
通過`setTimeout`延遲執行函數,若在延遲期間再次觸發事件,則清除之前的定時器并重新計時:
```javascript
function debounce(fn, delay) {
let timer = null;
return function(...args) {
clearTimeout(timer); // 清除已有定時器
timer = setTimeout(() => {
fn.apply(this, args); // 延遲執行
}, delay);
};
}
timer變量apply確保函數執行時的正確上下文...args保留原始事件參數const searchInput = document.getElementById('search');
searchInput.addEventListener('input', debounce(function() {
console.log('發送搜索請求:', this.value);
}, 500));
immediate參數擴展”`
(全文約350字,包含代碼示例和實現解析)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。