函数防抖、函数节流

函数节流:一个函数执行一次后,只有大于设定的执行周期之后才会执行第二次(比如频繁触发某个函数,出于优化,在规定时间内只有一次生效)

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);
    }
}

你可能感兴趣的:(函数防抖、函数节流)