防抖与节流

防抖

理解带参数的时候需要将参数也进行包装,在加工为防抖函数的时候,我们返回的就是一个函数。此函数我们可能传入参数,而这个参数我们是想作为不加工之前函数的参数,所以我们需要使用...arguments配置好这个参数。所以在调用fn时我们使用.call将其的this绑定到fn,并且将参数通过arguments绑定。

function debounce(fn,delay){
    let timer = null 
    return function(){
        clearTimeout(timer)
        timer = setTimeout(()=>{
            fn.call(this,...arguments)
        },delay)
    }
}

节流

arguments绑定和防抖是类似的。

function throttle(fn,delay){
    let lastTime = 0
    return function(){
        let nowTime = new Date().getTime()
        if(nowTime - lastTime > delay){
            fn.call(this,...arguments)
            lastTime = nowTime
        }
    }
}
上一篇:Javascript 函数function 知识点补充-持续更新


下一篇:Android长按事件和点击事件 冲突问题