闭包的实际应用

1、函数的防抖

// 函数防抖
function antiShake(fn, wait){
    let timeOut = null;
    return function(){
        // 这里不能使用箭头函数, 因为箭头函数没有arguments这个对象, 因此这里如果使用箭头函数,会根据作用域链往上查找,最后得到的arguments对象是antiShake的arguments
        if(timeOut){
            clearTimeout(timeOut);
            timeOut = null;
        };
        timeOut = setTimeout(() => {
            console.log('执行了啊')
            fn.call(null, ...Array.from(arguments))
        }, wait);
    }
};

这里举个例子:



 

你可能感兴趣的:(闭包的实际应用)