Js的节流和防抖讲解及手写实现(基于通俗易懂案例说明)

26 篇文章 1 订阅
本文介绍了JavaScript中的节流和防抖技术,包括它们的概念和应用场景。通过示例代码展示了如何实现节流函数和防抖函数,并以窗口大小改变事件为例,解释了未使用和使用节流、防抖后的效果。文章适合初学者理解这两种优化技术,为面试和实际项目开发提供帮助。
摘要由CSDN通过智能技术生成

1.众所周知,JavaScript的节流和防抖是很多面试官都喜欢问的问题(有些会让面试者简易手写出对应的主要实现过程和步骤).这里就此讲解下最简而易懂(大佬勿喷)的一种方法和其说明.

2.节流和防抖的概念:

A.节流概念: 事件(节流体内的函数)每隔一段时间(节流体内的定时器时间) 触发一次,可以触发多次。经典案例:王者荣耀的释放技能。

B.防抖概念: 事件(防抖体内的函数)动作完成后的一段时间(节流体内的定时器时间)后触发一次。经典案例:王者荣耀的回城。

3.未加节流和防抖的案例(代码和执行效果):

 function move(){
    console.log('窗口大小改变了');
 }
 window.addEventListener('resize',move)

未加节流和防抖的原生事件

  1. 节流函数和加了节流的案例(代码和执行效果):
/*
            func: 所需加节流的函数;
            delay: 时间间隔(单位毫秒ms)
        */
        function throttle(func, delay) {   
            let timer = null;
            return function () {
                if (!timer) {
                    func.apply(this, arguments);
                    timer = setTimeout(() => {
                        timer = null;
                    }, delay);
                } else {
                    console.log("上一个定时器尚未完成");
                }
            }
        }

节流函数
加了节流执行的函数事件效果

  1. 防抖函数和加了防抖的案例(代码和执行效果):
/*
            func: 所需加防抖的函数;
            delay: 时间间隔(单位毫秒ms)
        */
        function debounce(func, delay) {
            var timeout;
            return function () {
                clearTimeout(timeout);
                timeout = setTimeout(() => {
                    func.apply(this, arguments);
                }, delay);
            }
        }

防抖函数
加了防抖的函数事件执行效果

6.以上就是基于window的窗口改变事件结合节流和防抖简易函数来实现的基础讲解和效果展示.更多更详细的说明,可以查看其它大佬的博文(网上众多,百花缭绕).码字不易,多多支持(点赞,收藏).谢谢.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值