JavaScript 基础 - 防抖和节流

本文详细介绍了JavaScript中的防抖和节流技术,这两种技术常用于优化高频事件处理,提高页面性能。防抖确保在一段时间无触发后才执行函数,而节流则限制函数在特定时间间隔内执行一次。通过示例代码展示了如何实现防抖和节流函数,并应用于按钮点击事件中。

1. 防抖

*防抖
在高频(高频率触发事件) 后函数(方法)只执行一次
如果n秒内高频事件再次被触发,则重新计算时间

  • 实现方法: 每一次触发事件 设置一个延迟定时器
function FangDou () {
// 创建一个timeout 用于储存定时器id
      let timeout = null; 
      return function () {
        // 每次触发 清楚掉原有的定时器
        clearTimeout(timeout);
        // 创建一个新的 setTimeout 可以保证短时间内触发一次
        timeout = setTimeout(() => {
          alert("你好呀")
        }, 1000);
      }
    }
// 获取防抖函数
let fangd = FangDou ()
document.querySelector("button").onclick = fangd 

2. 节流

*节流:
高频事件触发,在n秒内只执行一次,所以节流稀疏函数的执行频率

  • 实现方法:每一次触发事件,如果当前函数已经执行直接退出
function JieLiu () {
      let flag = true; // 节流阀
      return function () {
        // 节流阀开启 函数执行
        if (!flag) return // 或者节流阀关闭 退出函数
        if (flag) flag = false // 进入执行函数 节流阀关闭
        setTimeout(() => {
          flag = true; //初始化后执行结束
          console.log("节流执行");
        }, 1000);
      }
    }

// 获取节流函数
let jiel = JieLiu()
document.querySelector("button").onclick = jiel
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值