js面試題之手寫節流函數和防抖函數


函數節流:不斷觸發一個函數后,執行第一次,只有大於設定的執行周期后才會執行第二次

 1 /* 
 2             節流函數:fn:要被節流的函數,delay:規定的時間
 3         */
 4        function throttle(fn,delay){
 5             // 記錄上一次函數出發的時間
 6             var lastTime = 0
 7             return function(){
 8             // 記錄當前函數觸發的時間
 9             var nowTime = new Date().getTime()
10             // 當當前時間減去上一次執行時間大於這個指定間隔時間才讓他觸發這個函數
11             if(nowTime - lastTime > delay){
12                 // 綁定this指向
13                 fn.call(this)
14                 //同步時間
15                 lastTime = nowTime
16             }
17             }
18        }   

函數防抖:不斷觸發一個函數,在規定時間內只讓最后一次生效,前面都不生效

 1 function debounce(fn,delay){
 2            var timer = null
 3         //  清除上一次延時器
 4           return function(){
 5                clearTimeout(timer)
 6               //  重新設置一個新的延時器
 7               timer = setTimeout(() => {
 8                   fn.call(this)
 9               }, delay);
10           }
11        }

更多面試題請前往githubhttps://github.com/bettersong/interview


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM