js节流与防抖的概念、区别、适用场景、实现与封装

首先了解他们的概念、区别、适用场景,后面有代码

概念:

防抖(debounce):触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间。
函数节流(throttle):高频事件触发,但在n秒内只会执行一次,所以节流会稀释函数的执行频率。****

区别:

防抖:在特定时间内,只要重新触发事件,就会重新计算时间,而在这个时间内只会执行最后一次。
也就是说,你只要一直触发这个事件,他就不会执行,停止后才会执行
节流:特定时间内,无论你出发多少次,在这段时间内,一定会有且仅有一次真正的事件触发

适用场景

防抖:表单提交

节流:页面滚动加载

代码及介绍:

新建一个dome,创建一个点击事件
blog.csdnimg.cn/2021032914223062.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Nzc4MzgzMA==,size_16,color_FFFFFF,t_70)

在这里插入图片描述
代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="icon" href="data:image/ico;base64,aWNv">
</head>

<body>
    <div id='box'>
        <button id="btn">
        添加
        </button>
    </div>
   
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
1. 原型链 原型链是 JavaScript实现继承的一种方式。每个 JavaScript 对象都有一个指向它的原型对象的内部链接,这个原型对象又有自己的原型对象,直到某个对象的原型为 null。 使用场景:在 JavaScript 中,原型链可以用于实现继承,通过在子类的原型对象上设置父类的实例,子类就可以继承父类的属性和方法,从而实现代码的复用。 2. 闭包 闭包是指有权访问另一个函数作用域中的变量的函数,创建闭包的最常见的方式就是在一个函数内部创建另一个函数。 使用场景:闭包可以用于封装变量,防止变量被外部访问。常用于模块化开发,用于实现私有变量和方法。还可以用于实现柯里化函数、节流函数等。 3. 防抖节流 防抖节流都是用于控制函数执行次数的方法。 防抖是指在一定时间内,多次触发同一事件,只执行最后一次事件的响应函数。实现的思路是使用定时器,在事件触发后设置一个定时器,如果在定时器时间内再次触发了事件,则清除定时器重新设置。如果在定时器时间内没有触发事件,则执行响应函数。 节流是指在一定时间内,多次触发同一事件,只执行一次事件的响应函数。实现的思路是使用定时器,在事件触发后设置一个定时器,如果在定时器时间内再次触发了事件,则不执行响应函数。如果在定时器时间内没有触发事件,则执行响应函数。 实现过程如下: 防抖: ```javascript function debounce(fn, delay) { let timer = null; return function() { let args = arguments; if (timer) clearTimeout(timer); timer = setTimeout(() => { fn.apply(this, args); }, delay); } } ``` 节流: ```javascript function throttle(fn, delay) { let timer = null; return function() { let args = arguments; if (timer) return; timer = setTimeout(() => { fn.apply(this, args); timer = null; }, delay); } } ``` 以上是防抖节流的两种实现方式,可以根据实际需求选择合适的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值