前端高频面试题防抖节流

防抖节流是什么

本质上是优化高频率执行代码的一种手段

如:浏览器的 resize、scroll、keypress、mousemove 等事件在触发时,会不断地调用绑定在事件上的回调函数,极大地浪费资源,降低前端性能

为了优化体验,需要对这类事件进行调用次数的限制,对此我们就可以采用 防抖(debounce) 和 节流(throttle) 的方式来减少调用频率

防抖

定义:
防抖主要是在规定时间内只触发一次,如果再次调用,时间重新计算
实现:

let timeout = null; 
function debounce(fn, delay, args) {
  if (timeout) clearTimeout(timeout); 
  timeout = setTimeout(() => {
    fn(args); 
  }, delay);
}

节流

定义:
节流是在间隔时间内只触发一次,比如间隔1s触发一次
实现:

let flag = null;
function throttle(fn, time, args) {
  if (flag) return;
  flag = setTimeout(() => {
    fn(args);
    flag = null;
  }, time);
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值