從實用角度來講,JS的防抖和節流,屬於前端技術的「性能優化」。前端
防抖:性能優化
假設有一個事件函數,在第一次觸發該事件時,先不執行函數,而是等待1秒後再執行,那麼:閉包
1. 若是在1秒內再次觸發該事件,則該事件函數不執行,1秒時間從新計算dom
2. 若是在1秒內沒有再次觸發該事件,則執行該事件函數函數
達到的效果就是,在1秒內屢次觸發事件,只會執行一次函數。性能
既然涉及到了計時,那麼就須要 setTimeOut 這個函數,還須要一個變量來存儲這個計時,考慮保護全局變量純淨,咱們能夠使用閉包處理。優化
節流:spa
假設有一個事件函數,在第一次觸發該事件後,設定一個閾值1秒,在這1秒內不論觸發多少次事件,都不執行函數。等1秒時間到了,不論有沒有觸發事件,都執行一次函數。事件
使用場景:input