节流函数和防抖函数

节流函数和防抖函数都是为了避免一段时间内某个方法被疯狂触发。

但是这两者也有所不同:
节流函数是让某方法在一段时间内只执行第一次
防抖函数是让某方法在一段时间内只执行最后一次

节流函数:

function jieliu(fn,delay){
    // 记录上一次触发函数的时间
    var lastTime = 0;
    
    return function(){
        // 记录当前函数触发的时间
        var nowTime = Date.now();
        
        if(nowTime - lastTime > delay){
            // 修正this指向问题
            fn.call(this)
            // 同步时间
            lastTime = nowTime;
        }
    }
}

document.onscroll = jieliu(function() {console.log('scroll事件触发了' + Date.now( ))},200}

防抖函数:

function fangdou(fn,delay){
    // 记录上一次的延时器
    var timer = null
    return function(){
        // 清除上一次延时器
        
       // 重新设置新的延时器
       timer = setTimeout(function(){
        fn.appply(this)
       },delay)
    }
}

document.getElementById('btn').onclick = fangdou( function(){ console.log('点击事件被触发了' + Date.now()) },200 )
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容