函数节流:一个函数执行一次后,只有大于设定的执行周期之后才会执行第二次(比如频繁触发某个函数,出于优化,在规定时间内只有一次生效)
function throttle(fn, delay) {
var lastTime = 0;
return function () {
var nowTime = Date.now();
if(nowTime - lastTime > delay) {
fn.call(this); // 修正this指向问题
lastTime = nowTime; // 闭包,lastTime会取上一次返回值,而不是0
}
}
}
函数防抖:规定时间内,只让最后一次生效,前面的不生效,如频繁点击某个按钮
function debounce(fn, delay) {
var timer = null;
return function () {
clearTimeout(timer); // 清除延时器
timer = setTimeOut(function() { // 重设延时器
fn.apply(this);
}, delay);
}
}