JavaScript实现防抖函数
什么是防抖?防抖就是避免快速多次点击后执行过多的函数调用,就是本来你点击支付宝支付后不小心在点击一次,导致支付函数被调用了两次,还都执行了,付了两次钱。
防抖函数的思想就是将函数延迟调用,延迟时间内不可再次调用,为确保在时间段内不在执行,需要将延迟函数清除。
<input type="button" name="" id="" value="" />
let btn=document.querySelector('input')
let timer
function pushNamber(){
console.log('这是一个防抖函数')
}
btn.addEventListener('click',function(){
clearTimeout(timer)
timer=setTimeout(()=>{
pushNamber()
},1000)
})
需要注意的点有:timer变量只能定义在监听函数外,如果在监听函数内,点击按钮后执行监听的回调函数会多次定义,值不唯一,无法关闭上一个函数。
回调函数只可使用箭头函数,否则this将指向window而不是btn对象(不用箭头函数需要使用call或者apply)
核心思想:在规定的时间内,没有点击按钮,才会执行函数。在规定事件内,一直按下按钮,函数会一直不会被触发。
JavaScript实现防抖函数的更多相关文章
- JavaScript节流与防抖函数封装
js节流与防抖函数封装 常见应用场景: window的 resize 和 scroll 事件: 文字输入时的 keyup 事件: 元素拖拽.移动时的 mousemove 事件: 防抖 定义:多次触发事 ...
- JavaScript权威指南 - 函数
函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...
- 用javascript 写个函数返回一个页面里共使用了多少种HTML 标签
今天我无意间看到一个面试题: 如何用javascript 写个函数返回一个页面里共使用了多少种HTML 标签? 不知你看到 是否蒙B了,如果是我 面试,肯定脑子嗡嗡的响.... 网上搜了搜也没有找到答 ...
- JavaScript基础学习-函数及作用域
函数和作用域是JavaScript的重要组成部分,我们在使用JavaScript编写程序的过程中经常要用到这两部分内容,作为初学者,我经常有困惑,借助写此博文来巩固下之前学习的内容. (一)JavaS ...
- JavaScript 基础回顾——函数
在JavaScript中,函数也是一种数据类型,属于 function 类型,所以使用Function关键字标识函数名.函数可以在大括号内编写代码并且被调用,作为其他函数的参数或者对象的属性值. 1. ...
- JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解
二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...
- javascript立即执行函数
javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花;当然,能理解各型各色的写法也是对javascript语言特性更进一步的深入理解. ( ...
- JavaScript 立即执行函数
js中(function(){…})()立即执行函数写法理解 javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法 ...
- 前端学习 第六弹: javascript中的函数与闭包
前端学习 第六弹: javascript中的函数与闭包 当function里嵌套function时,内部的function可以访问外部function里的变量 function foo(x) { ...
- JavaScript学习09 函数本质及Function对象深入探索
JavaScript学习09 函数本质及Function对象深入探索 在JavaScript中,函数function就是对象. JS中没有方法重载 在JavaScript中,没有方法(函数)重载的概念 ...
随机推荐
- 你可能不知道的秘密——String s=new String(“abc”)到底创建了几个对象?
String s=new String("abc")创建了几个对象? 在探讨上述问题结论之前,我们需要了解常量池这个概念. 常量池 由于字符串在Java中被大量使用 ...
- windows下IPv6组播(C++、MFC)
Server #include <stdio.h> #include <Ws2tcpip.h> #include <winsock2.h> #pragma comm ...
- scala怎么退出
scala怎么退出 scala> :help //查看帮助 All commands can be abbreviated, e.g., :he instead of :help. :edit ...
- js重复赋值 js数据交换 js调式方法
重复赋值 对一个变量,对此赋值,存储数据 定义变量时对变量初始化 此时js语法规定,必须带有关键词var 或者let 或者const 之后使用变量时,不需要带有关键词 第一次定义变量,初始化变量,必须 ...
- react withRouter高阶组件
作用:把不是通过路由切换过来的组件中,将react-router 的 history.location.match 三个对象传入props对象上 默认情况下必须是经过路由匹配渲染的组件才存在this. ...
- Vue3等比例缩放图片组件
本文由 ChatMoney团队出品 有些情况我们需要在各种刁钻的情况下都要保持图片比例不变,比如用户缩放窗口等改变布局的情况.实现原理就是通过容器的宽度和内边距在保持你想要的比例. 以下是基础功能的组 ...
- C# .NET 操作Windows hosts
C# .NET 操作Windows hosts 工具类HostsUtil: using System; using System.IO; using System.Text; namespace Co ...
- 已经有 Prometheus 了,还需要夜莺?
谈起当下监控,Prometheus 无疑是最火的项目,如果只是监控机器.网络设备,Zabbix 尚可一战,如果既要监控设备又要监控应用程序.Kubernetes 等基础设施,Prometheus 就是 ...
- element el-input 去掉边框
element样式还是蛮好的,只是有时候我们需要做一些调整,比如,el-input 的边框,官网是这样子的 我们需要去掉这个边框 试了常用的:border: none: 以及:outline:non ...
- 《Vue3.x +TpyeScript实践指南》勘误
图书出版已有一段时间,书中已发现错误如下: 书的第14页,倒数第3行,npm init -y命令中,init和-y之间应该有个空格: 书的第32页,代码的第1行,应该为模板字符串符号 `,我看印刷的是 ...