编辑代码

// 非立即执行
function debounce(func, wait) {
    let timeout;
    return function () {
        let context = this;
        let args = [].slice.call(arguments);
        if (timeout) {
            clearTimeout(timeout)
        }
        timeout = setTimeout(()=>{
            func.apply(context,args);
        },wait)
    }
}
// 立即执行
function debounce_1(func,wait){
    let timeout
    return {
        function(){
            let args = [].slice.call(arguments);
            if(timeout) clearTimeout(timeout);
            let callNow = !timeout;
            timeout = setTimeout(()=>{
                timeout = null;
            },wait) 
            if(callNow) fn.apply(this,args);
        }
    }
}