SOURCE

// 防抖:在事件被触发n秒后执行回调,如果在这n秒内又被触发,则重新计时。

// 简易的单个版本
let timer = null

function f(...arg) {
    clearTimeout(timer)
    timer = setTimeout(() => {
        fn(arg)
    }, delay)
}

// 封装版本
function debouce(fn, delay) {
    let timer = null
    return (...arg) => {
        clearTimeout(timer)
        timer = setTimeout(() => { // 别忘了给timer赋值
            fn(arg)
        }, delay)
    }
}

// 节流:规定在单位时间内,只能触发一次回调,如果触发多次,只有一次生效。

// 单个函数
let flag = true

function f(...arg) {
    if (flag === false) return
    flag = false
    setTimeout(() => {
        fn(arg)
        flag = true
    }, delay)
}

// 函数集合

function throlt(fn, delay) {
    let flag = true
    return (...arg) => {
        if (flag === false) return
        flag = false
        setTimeout(() => {
            fn(arg)
            flag = true // 别忘了
        }, delay)

    }
}
console 命令行工具 X clear

                    
>
console