【闭包应用】防抖和节流函数封装

  • Post author:
  • Post category:其他


1.节流函数封装

function throttle(cb, time = 300) { //延迟时间参数可选,默认为300ms
            let timer = null;
            return function (e) {  //真正的事件处理函数
                if (timer) return;
                timer = setTimeout(() => {
                 //cb是普通函数 this指向为window 需要修改this指向
                    cb.call(this, e); 
                    timer = null;
                }, time)
            }
        }
//示例
document.onscroll = throttle(function () {
            console.log(111111);
        }, 1000)

2.防抖函数封装

        function fn(cb, time = 300) {
            let timer = null;
            return function (e) {
                clearTimeout(timer);
                timer = setTimeout(() => {
                    cb.call(this, e);
                }, time)
            }
        }
//示例
        document.onclick = fn(function () {
            console.log(1111);
        })



版权声明:本文为Lyon__Lee原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。