JavaScript防抖和节流

JavaScript防抖和节流概念函数防抖和函数节流 两者都是优化高频率执行 js 代码的一种手段 防抖 任务频繁触发的情况下 只有任务触发的间隔超过指定间隔的时候 任务才会执行 节流 指定时间间隔内只会执行一次任务 一定时间内 js 方法只跑一次 防抖 buttonid debounce 点我防抖 debounce on click deboun buttonid debounce

在这里插入图片描述

文章目录


概念

函数防抖和函数节流,两者都是优化高频率执行js代码的一种手段。

  • 防抖:就是一定时间内,只会执行最后一次任务;
  • 节流:就是一定时间内,只执行一次 ;

防抖

<button id="debounce">点我防抖! 
       button> <script> $('#debounce').on('click', debounce()); function debounce() { 
         let timer; // 使用闭包,多次调用都能访问到同一个变量,而不是生成新的变量 return function () { 
         clearTimeout(timer); timer = setTimeout(() => { 
         // 需要防抖的操作... console.log("防抖成功!"); }, 500); } }  
        script> 

在这里插入图片描述
函数防抖的应用场景,最常见的就是页面滚动条监听的例子,来进行解析:

let timer; window.onscroll = function () { 
      clearTimeout(timer); timer = setTimeout(function () { 
      //滚动条位置 let scrollTop = document.body.scrollTop || document.documentElement.scrollTop; console.log('滚动条位置:' + scrollTop); }, 200) } 

在这里插入图片描述
防抖函数的封装使用

// 防抖函数 function debounce(fn,delay) { 
      let timer; return function () { 
      clearTimeout(timer); timer = setTimeout(() => { 
      fn.apply(this,arguments); },delay); } } window.onscroll = debounce(function () { 
      let scrollTop = document.body.scrollTop || document.documentElement.scrollTop; console.log('滚动条位置:' + scrollTop); },200) // jq $(window).on('scroll', debounce(function () { 
      console.log("防抖成功!"); }, 200)) 

节流

<button id="throttle">点我节流! 
        button> <script> $('#throttle').on('click', throttle()); function throttle(fn) { 
          let flag = true; // 使用闭包,方法多次调用都能访问到同一个变量,而不是生成新的flag变量 return function () { 
          if (!flag) { 
          return; } flag = false; setTimeout(() => { 
          console.log("节流成功!"); flag = true; }, 1000); }; }  
         script> 

在这里插入图片描述
函数节流应用的实际场景,根据文本框中输入的内容自动请求后台数据

节流函数的封装使用

<input type="text" value="" id="input"> <script> // 节流函数 function throttle(fn, delay) { 
         let flag = true; return function () { 
         if (!flag) { 
         return; } flag = false; setTimeout(() => { 
         fn.apply(this, arguments); flag = true; }, delay); } } $('#input').on('keyup', throttle(function () { 
         console.log($(this).val()); // ajax后台请求.... }, 1000));  
        script> 

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211143.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午11:06
下一篇 2026年3月18日 下午11:07


相关推荐

  • {转载}circos绘图(2)

    {转载}circos绘图(2)https wenlongshen github io 2017 03 22 Circos 2 本章主要对 circos 环图中最基本的元素进行设置 包括 karyotype ideogram ticks 等模块 KaryotypeKar 的信息就如同坐标轴一般 其大小 顺序 位置等直接决定了后续数据的展示 这里我们新建一个 karyotype conf 文件用来设置 karyotyp

    2026年3月17日
    2
  • 前端优化 – 提高 Web 性能的 9 个技巧

    前端优化 – 提高 Web 性能的 9 个技巧这篇文章将介绍您可以用来帮助改进前端优化的有用技术 通过专注于干净的代码 压缩图像 最小化外部请求 实施 CDN 和其他一些方法 您可以显着提高网站的速度和整体性能 1 清理 HTML 文档 HTML 或超文本标记语言是几乎每个网站的支柱 HTML 允许您使用标题 副标题 列表和其他有用的文本组织功能来格式化网页 借助 HTML5 的最新更新 您还可以 create 有吸引力的图形 网络爬虫可以轻松读取 HTML 因此搜索引擎可以使用您网站的更新 content 及时 在处理 HTML 时 您应该努力以简洁

    2026年3月17日
    1
  • 计算机cpu的字母,笔记本电脑CPU型号后缀字母HQ、U、Y含义详解

    计算机cpu的字母,笔记本电脑CPU型号后缀字母HQ、U、Y含义详解我们在选购笔记本的时候,可能优先会看CPU是什么型号的,因为CPU的好坏决定了电脑运算速度的好坏,因此CPU选购十分重要。在笔记本中,不少笔记本CPU型号后缀字母可能不同,那么它们代表什么含义呢?今天蝈蝈就来给大家讲讲笔记本CPU型号后缀字母HQ、U、Y含义,希望对你有帮助!Y:超低压,性能很弱功耗很低相比低压CPU,名字中有“Y”的是性能更弱的超低压CPU。在第七代处理器之前,超低压的命名方式为…

    2022年6月16日
    79
  • 最小二乘法简明推导过程

    最小二乘法简明推导过程最小二乘法推导最小二乘法公式J(θ)=1m∑i=1m(y(i)−hθ(x(i)))2J(\theta)=\frac1m\sum_{i=1}^m(y^{(i)}-h_{\theta}(x^{(i)}))^2J(θ)=m1​i=1∑m​(y(i)−hθ​(x(i)))2证明1.假设设数据中未被考虑进来的特征和人为无法控制的噪声为ε\varepsilonε。即y(i)=θTx(i)…

    2022年5月13日
    70
  • PHP实现敏感词过滤系统「建议收藏」

    PHP实现敏感词过滤系统「建议收藏」码说明1、敏感词库维护更新脚本:reload_dict.php,提供自动更新字典库到trie-tree文件的过程PHP<?php//设置内存ini_set(‘memory_limit’,’128M’);//读取敏感词字典库$handle=fopen(‘dict.txt’,’r’);//生成空的trie-tree-filter$resTrie=trie_filter_new();while(!feof($handle)){$it

    2022年6月13日
    77
  • influxDB 2.0安装及使用说明

    influxDB 2.0安装及使用说明influxdb2 0 使用指南

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号