節(jié)流:防止頻繁執(zhí)行某函數(shù),兩次執(zhí)行需要間隔時(shí)間(比如滾動(dòng))
防抖:防止多次發(fā)生,重復(fù)執(zhí)行(比如按鈕重復(fù)提交數(shù)據(jù))
// 重點(diǎn)是使用閉包鎖住變量的值
// 防抖
function debounce(fn, wait) {
var timer = null
return function() {
if(timer) clearTimeout(timer)
setTimeout(fn, wait)
}
}
// 節(jié)流
function throttle(fn, delay) {
var prev = Date.now()
return function() {
var context = this,
args = arguments,
now = Date.now();
if(now - prev >= delay) {
fn.apply(context, args)
prev = Date.now()
}
}
}