函數節流:不斷觸發一個函數后,執行第一次,只有大於設定的執行周期后才會執行第二次
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