闭包 vue3 防抖 节流代码 不生效解决方法

我暂时理解的闭包:一个函数中嵌套着另一个函数,这个函数就是闭包。闭包不会内存泄露,也不会被清除。所以不能滥用,滥用会导致内存过大。
//开始学习:
基础的概念:JS的执行上下文。就是JS是有作用域的,一个全局作用域,一个是函数里面的块级作用域。


image.png

日常使用闭包的地方:防抖、节流。
防抖:执行多次后的最后一次。比如10秒内点了10下button,执行的是第十下click事件,在延迟多少秒后。
节流:在10秒内执行第一次点击、在第二个10秒执行第二个10s的第一次点击。

 var timer = null, last = 0;
   // 节流
   throttle(fn, delay) {
     return (function(...args) {
       var nowTime = Date.now()
       if (nowTime - last > delay) {
         last = nowTime
         fn.call(this, args)
       }
     })()
   },
   //  防抖
   debounce(fn, delay) {
     return (function(...args) {
       if (timer) {
         clearTimeout(timer)
       }
       timer = setTimeout(() => {
         fn.call(this, args)
       }, delay)
     })()
   }
   //调用
   fd() {
     debounce(fnName, 1000)
   },
   jl() {
     throttle(fnName, 700)
   },

以下是我vue3的写法


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 函数节流 说明:在规定的时间内,第一执行函数生效,后面的不生效,只有大于设定的时间才执行下一次。 用途:一般用于一...
    海浪_eee6阅读 3,610评论 0 1
  • 闭包 由于节流和防抖函数的实现都用到了闭包,所以在了解节流和防抖之前我先简单介绍下什么是闭包。 由于js代码在一个...
    喵咪_f9a1阅读 1,917评论 0 0
  • 前言 最近面试被问到了闭包和防抖,之前只是知道概念,但没有深刻理解,被面试官提醒才明白防抖就是闭包的一个实际应用场...
    0winder0阅读 5,108评论 1 0
  • 什么是节流和防抖 节流和防抖的本质都是用闭包的形式,通过对事件对应的回调函数进行包裹,用自由变量缓存时间信息,最后...
    鹤仔z阅读 2,490评论 1 3
  • 微信小程序防抖和节流 适用于及时搜索和页面滚动: 特点 : 优化代码,减少函数触发,减少页面请求。 原理:利用延时...
    龙猫小哥阅读 10,438评论 0 2