函數節流:一個函數執行一次後,只有大於設定的執行週期後纔會執行第二次
應用的事件: onkeypress,onscroll,resize等事件
用途:上拉加載、若隱若現的head頭部...
function throttle(fn, delay) {
//記錄上一次函數觸發的時間
var lastTime = 0;
return function() {
//記錄當前函數觸發的時間
var nowTime = Date.now();
if(nowTime - lastTime > delay){
//函數this指向性的問題
fn.call(this);
//同步時間
lastTime = nowTime;
}
}
}
防抖函數:一個需要頻繁觸發的函數,在規定時間內,只讓最後一次生效,前面的不生效
應用事件:oninput等
用途: 用戶輸入文本自動聯想匹配出一些結果供用戶選擇 (百度搜索)
function debounce(fn, delay) {
//記錄上一次的延時器
var timer = null;
return function() {
//清除延時器
clearTimeout(timer);
timer = setTimeout(function() {
fn.call(this);
}, delay)
}
}