// 点击调用方法
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('你好啊') , 此时调用()=>{ } 箭头函数.










网友评论