闭包和回调函数

   // 点击调用方法
   buttonClick(index) {
      this.initWarpRect((str) => {
            console.log("======我是后后后后后后===", str);
        })
    },

    // 定义方法
     initWarpRect(success) {
        setTimeout(() => { 
            console.log("====我是延时函数===");
            success('你好啊')  // 调用回调函数并传参数
        }, 5000)
        console.log("====开始初始化了===");
    },

打印:
====开始初始化了===
====我是延时函数===
======我是后后后后后后=== 你好啊

在JavaScript中,success作为参数传入函数后仍然可以被调用,这是因为函数在JavaScript中是一等公民,可以作为参数传递和调用。具体原理如下:

函数作为参数传递:

  • JavaScript中函数可以像普通变量一样被传递
  • 传入的success参数实际上是一个函数引用
  • 通过success()语法可以执行该函数

闭包保持引用:

  • 箭头函数形成的闭包保留了对外部作用域中success的引用
  • 即使外部函数执行完毕,内部函数仍能访问success参数

回调函数机制:

  • 这是典型的回调函数设计模式
  • 调用方传入一个函数作为"完成后的处理逻辑"
  • 被调用方在适当时机执行该回调函数

我的理解: 用户点击后会调用this.initWarpRect方法, 进入方法后进行延时函数的调用; 这是将结果调用success('你好啊') , 此时调用()=>{ } 箭头函数.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容