前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript防抖节流

JavaScript防抖节流

作者头像
ymktchic
发布2022-01-18 17:21:03
4920
发布2022-01-18 17:21:03
举报
文章被收录于专栏:ymktchicymktchic

闭包

父函数中,返回的子函数

代码语言:javascript
复制
    var str= '我是大帅哥'
 var OBJ= {
       str:'hello world',
       getData:function(){

           return function(){
               return this.str
           }
       }
 }
console.log(OBJ.getData()())

输出结果为: 我是大帅哥

原因: this的指向是,由它所在函数调用的上下文决定的,而不是由它所在函数定义的上下文决定的。function fn(){} 箭头函数()=>{}中的this,是由它所在函数定义的上下文决定的。

代码语言:javascript
复制
function fn1{}{
let n=123;
return function(){
console.log(n)
}
}
let f1=fu1{}
f1{}

f1保存的是return function(){console.log(n)}这个匿名函数所在堆地址的引用,并不是赋值。

函数防抖

函数防抖(debounce):当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定的时间到来之前,又一次触发了事件,就重新开始延时。

代码语言:javascript
复制
<body>
    <input type="text" name="" id="">
    <input type="submit" name="" id="input">

    <script>
   var btn =document.getElementById('input')
   btn.addEventListener('click',debounce(submit,2000),false)/
        
   function submit(){

    console.log(11)

   }
   function debounce(fn,timer){
    var t =null
    
       return function btnevent(){
       var firstClick =!t
        if(t){clearTimeout(t)}

            if(firstClick){
            fn.apply(this,arguments)}

            t= setTimeout(()=>{
                t=null;
          
            },timer)
       }
   }
    </script>
</body>
GIF 2021-12-11 19-28-31
GIF 2021-12-11 19-28-31

节流

函数节流(throttle):当持续触发事件时,保证一定时间段内只调用一次事件处理函数。节流通俗解释就比如我们水龙头放水,阀门一打开,水哗哗的往下流,秉着勤俭节约的优良传统美德,我们要把水龙头关小点,最好是如我们心意按照一定规律在某个时间间隔内一滴一滴的往下滴。

通过设置时间戳

代码语言:javascript
复制
<body>
    <input type="text" name="" id="">
    <input type="submit" name="" id="input">
    <script>
  var btn =document.getElementById('input')
  btn.addEventListener('click',throttle(submit,2000),false)
  function submit(){
      console.log(this)
  }
  function throttle(fn,delay){
    var begin = 0
    return function(){
            var cur = new Date().getTime()
            if(cur - begin > delay){
        fn.apply(this,arguments);
                begin=cur;
    }
    }
  }
    </script>
</body>
GIF 2021-12-11 19-31-07
GIF 2021-12-11 19-31-07
image-20211211193802557
image-20211211193802557
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 闭包
  • 函数防抖
  • 节流
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档