防抖指连续触发时只执行最后一次,节流指单位时间最多执行一次;前者适用于搜索框等需等待操作停止的场景,后者适用于滚动监听等需稳定响应频率的场景。

节流(throttle)和防抖(debounce)是前端开发中常用的优化手段,主要用于控制函数的执行频率,避免在高频触发场景下造成性能问题。比如窗口滚动、输入框搜索、按钮重复点击等场景。下面介绍它们的原理与实现方式。
防抖的原理是:当事件被频繁触发时,只执行最后一次操作。如果在设定的时间内再次触发,则重新计时。
适用于:搜索框输入联想、表单验证、窗口resize后重新计算布局等。
防抖实现方法:
使用定时器记录每次触发,若在延迟时间内再次触发,则清除旧定时器,重新设置。
function debounce(func, delay) {
let timer;
return function (...args) {
const context = this;
if (timer) clearTimeout(timer);
timer = setTimeout(() => {
func.apply(context, args);
}, delay);
};
}
使用示例:
const searchInput = document.getElementById('search');
searchInput.addEventListener('input', debounce(function(e) {
console.log('搜索:', e.target.value);
}, 300));
节流的原理是:规定一个单位时间,在这个时间内最多只执行一次函数。即使事件被频繁触发,函数也按固定节奏执行。
适用于:页面滚动监听、鼠标移动、按钮防止重复提交等。
LALAL.AI
AI人声去除器和声乐提取工具
196
查看详情
节流实现方法(时间戳方式):
通过记录上次执行时间,判断当前时间是否超过设定间隔,决定是否执行函数。
function throttle(func, delay) {
let lastTime = 0;
return function (...args) {
const now = Date.now();
const context = this;
if (now - lastTime >= delay) {
func.apply(context, args);
lastTime = now;
}
};
}
节流实现方法(定时器方式):
使用定时器确保每隔一段时间执行一次。
function throttle(func, delay) {
let timer;
return function (...args) {
const context = this;
if (!timer) {
timer = setTimeout(() => {
func.apply(context, args);
timer = null;
}, delay);
}
};
}
使用示例:
window.addEventListener('scroll', throttle(() => {
console.log('页面滚动');
}, 100));
防抖关注的是“最后一次操作”,适合需要等待用户停止操作后再执行的场景;节流关注的是“稳定频率执行”,适合需要持续响应但不能太频繁的场景。
实际项目中可以根据需求选择合适的方式,也可以结合使用。基本上就这些,不复杂但容易忽略细节。掌握好这两个技巧,能有效提升应用性能。
以上就是JS节流防抖怎么实现_JS函数节流throttle与防抖debounce方法教程的详细内容,更多请关注其它相关文章!
# js
# 廊坊网站建设建议怎么写
# 泸州网站建设定制价格
# 天水网站搜索优化
# 苏州抖音seo流程
# 在这个
# 非标准
# 中对
# 自定义
# 的是
# 时间内
# 适用于
# js完整使用教程
# 前端
# app
# 联想
# 前端开发
# win
# 区别
# 防抖
# 表单
# 最多
# 为什么做产品推广营销
# 广东网站推广什么价格
# 邯郸网站推广蔚信hfqjwl下拉
# 亚洲seo教父
# 临潼区网络营销推广招聘
# seo推广哪家口碑好
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
Django模型动态关联检查:高效管理复杂关系
使用VS Code调试Python代码:从入门到精通
微信网页版在线登录 微信网页版在线使用入口
MySQL多重关联查询:利用别名高效获取同一表的多个关联字段
Composer如何使用composer-plugin-api开发自定义插件
如何查找哪个composer包引入了特定的依赖?
KFC邀请码怎么使用领额外优惠_KFC邀请码输入方式与额外优惠代码获取方法
iQOO手机信号差网络不稳定怎么办 信号问题原因排查与增强设置【攻略】
处理含命名空间的XML文件 Power Query中的高级技巧
Python自动化抓取GBGB赛狗比赛结果:日期范围与赛道筛选教程
泰拉瑞亚网页版在线登录入口 泰拉瑞亚官方正版入口
《王者荣耀世界》英雄获取攻略
《kimi智能助手》制作ppt教程
windows10怎么开启卓越性能_windows10电源选项代码激活
J*aScript字符串_Unicode处理
漫蛙manwa官网浏览入口_漫蛙漫画网页版访问链接
Go反射进阶:访问内嵌结构体中的被遮蔽方法
《宝可梦大集结》S4冠军之路开始时间介绍
在J*a里什么是行为抽象_抽象行为对代码复用的提升作用
b站怎么用微信登录_b站微信登录方法
哔哩哔哩的|直播|间怎么送礼物_哔哩哔哩|直播|送礼操作指南
C++二维数组动态分配方法_C++指针与数组内存布局
Sublime怎么自动添加CSS前缀_Sublime安装Autoprefixer插件
Python项目中的条件导入:解决跨模块依赖问题
汽水音乐官网网页版入口 汽水音乐官网网页版在线入口
深入理解随机递归函数的确定性:内部节点、叶节点与时间复杂度分析
Windows自带的便笺数据如何备份_防止数据丢失的便利贴迁移教程【干货】
Firefox OS应用开发:解决XMLHttpRequest跨域请求阻塞问题
解决异步Python机器人中同步操作的阻塞问题
苹果手机聊天记录删除了如何恢复
怎么恢复删除的电脑文件_数据恢复软件使用教程
2025SNH48年度青春盛典门票价格及购买方式
macosmonterey系统外接显示器驱动怎么安装_macosmonterey外接显示器驱动与分辨率调整
Python实战:高效处理实时数据流中的最小/最大值
PHP动态导航按钮:根据用户登录状态切换链接与文本
红手指专业版app注册教程
解决 Vue 3 组件未定义错误:理解 createApp 与根组件的正确使用
C#解析来自网络的XML流数据 实时错误处理与重试机制
苹果自助维修计划支持哪些设备机型
优化Google Charts Gauge:在数据库无数据时显示默认值
中通快递官网指定查询 中通快递单号查询平台入口
批改网网页版登录 批改网电脑版学生登录入口
如何定制PrimeNG Sidebar的背景颜色
J*aScript大数运算_BigInt使用指南
《大润发优鲜》充值方法介绍
Coolpad5890 ROM刷机包
苹果11如何更换iCloud账号_苹果11账号切换的具体步骤
5G和6G的连接密度有什么区别 6G每平方公里能连接多少设备
PHP utf8_encode 字符编码转换陷阱与解决方案
《七读免费小说》开通会员方法
2025-11-10
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。