什么是回调函数?
admin
2024-01-29 01:23:19
0

1、什么是回调函数?

将函数B作为实参传递给函数A,那么把函数B称为回调函数,也称为高阶函数。

表示某个函数定义完成后并不会立即执行,而是在完成某些操作之后再来调用该函数

function B(){} //定义B函数
​
function A(args){} //定义A函数
​
A(B) //调用A函数,将函数B作为参数传递给A函数,将B函数称为回调函数

2、回调函数的使用

(1)先定义回调函数,在主调函数中传递回调函数的函数名

function print(num){console.log(num);
}
​
function add(n1,n2,callback){ //n1,n2是普通参数,callback是函数let s = n1 + n2callback(s)
}
add(12,23,print)//将print函数传递给形参callback,print函数就是回调函数

(2)定义匿名回调函数

function add(n1,n2,callback){ //n1,n2是普通参数,callback是函数let s = n1 + n2callback(s)
}
add(12,23,function(num){ //调用add函数时,给它传递一个匿名函数(该匿名函数就是回调函数)console.log(num);
})

3、回调函数的特点

(1)不会立即执行:在主调函数中执行回调函数时必须带'()',若有参数则需要传递参数

(2)回调函数是一个闭包:它可以访问主调函数中的变量

(3)执行前的类型判断:在主调函数中执行回调函数之前,建议判断回调函数是否是一个函数

function print(num){console.log(num);
}
function add(n1,n2,callback){ //n1,n2是普通参数,callback是函数let s = n1 + n2if (typeof callback === 'function') {callback(s)} else{console.log('第三个参数必须是函数');}
}
// add(12,23,print)
add(12,23,23)

4、回调函数中this指向的问题

function createData(callback){ //createData是主调函数,callback是回调函数callback()
}
​
let obj = {data:100,tool:function(){createData(function(){console.log(this,1111); //this指向window对象,为什么this指向window对象})}
}
obj.tool() //window 1111

(1)使用箭头函数

function createData(callback){ //createData是主调函数,callback是回调函数callback()
}
​
let obj = {data:100,tool:function(){createData(()=>{console.log(this,1111); //this指向obj对象})}
}
obj.tool() //{ data: 100, tool: [Function: tool] } 1111

(2)在调用回调函数之前,定义一个变量,将this保存起来

function createData(callback){ //createData是主调函数,callback是回调函数callback()
}
​
let obj = {data:100,tool:function(){let self = this //定义self将this保存起来createData(function(){console.log('回调函数:',self); //this指向obj对象})}
}
obj.tool() //{ data: 100, tool: [Function: tool] }

5、JavaScript中使用回调函数的原因

(1)JavaScript是一个事件驱动型的语言,在程序的执行过程中不会因为某一次的响应没有完成而停止程序,而是继续监听后续的事件,如果后续的某个事件被触发,则程序继续执行

相关内容

热门资讯

消费还扛不起大旗 来源:虎嗅APP 出品 | 妙投APP 作者 | 段明珠 牛市走了一半,消费股却像被遗忘了。202...
多措并举破解部分农村“取暖贵”... 张贤达绘(人民视觉) 近来,我国北方一些地区农村“煤改气”后,有读者网友反映,用气价格高,导致出现有...
天域半导体携手青禾晶元,共同推... 2026年1月16日,天域半导体(02658.HK)宣布与青禾晶元半导体科技(集团)有限责任公司签署...
赵建:渤海银行“变形记”——“... 通过微观个例看宏观大势,以充分理解中国经济社会深度转型的底层逻辑,在中国资产重估中寻找可以长期战略级...
爱舍伦将于1月21日北交所上市... 海牛投研1月16日消息,爱舍伦(920050)将于1月21日在北交所上市,同日从新三板摘牌。 资料显...
科创引领 向新而行——南方基金... 来源:市场资讯 (来源:泡财经) 在科技自立自强加快推进、产业结构深度重塑的时代背景下,南方基金投教...
原创 伊... 伊朗刚发出战争警告,特朗普就宣布加税25%,在这个过程中,中国成为其首个针对目标。那么,美国会不会真...
企业安全管理综合信息系统 在企业运营过程中,安全管理是一项基础且至关重要的工作。随着组织规模的扩大和业务复杂性的增加,传统依赖...
两融资金大举入场,别被起伏迷惑 窗外的夜市已经安静下来,屏幕里的行情还在跳着数字。刚刷到一条市场数据,近期科创板的两融余额又往上走了...
“1200亿合同”遭质疑 容百... 1月19日,容百科技(688005.SH)开盘即迎来大跌。截至发稿前,股价报32.04元,下跌14....
读懂丨“全球上市板”要来了!新... 企业很快将有机会在美国和新加坡两地上市,这在新加坡交易所和纳斯达克之间尚属首例。 新加坡交易所-纳斯...
固收及黄金主题产品成银行理财“... 2026年开年,国内银行理财市场热度攀升,固收类产品稳居市场主力,黄金挂钩结构性存款异军突起成为“黑...
B站粉丝第一!罗翔连续6年成百... 快科技1月17日消息,B站2025百大UP主盛典将于明晚18点召开,届时百大UP主也将正式揭晓。 B...
视涯科技IPO通过注册:年度营... 瑞财经 王敏 1月15日,据上交所官网,视涯科技股份有限公司(以下简称“视涯科技”)科创板IPO注册...
马斯克强推FSD订阅制,特斯拉... 《商业内幕》为此采访了三位特斯拉车主。对于这一调整,他们有的感到沮丧,有的感到兴奋。 反感 “这很让...
万腾平台:特朗普关税威胁引发避... 周一,黄金和白银价格创下历史新高,因特朗普威胁对欧洲征收额外关税,引发市场避险情绪上升。投资者纷纷转...
华尔街错过的5万亿:当Dewu... 1月16日,香港尖沙咀的空气里,嗅不到一丝宏观经济寒冬的气息。 在美联储降息预期不明、全球资产收益率...
保时捷在华销量连跌4年,较高点... 保时捷销量正在大幅下滑,尤其在中国市场。 保时捷官方近日公布的数据显示,该公司2025年全球销量约2...
三大指数集体低开,航天系、AI... 1月19日,A股三大指数集体低开,上证指数下跌0.27%,深证成指跌0.41%,创业板指跌0.6%。...
绽妍生物拟北交所上市:70后副... 瑞财经 刘治颖 1月13日,绽妍生物科技股份有限公司(以下简称:绽妍生物)在四川证监局完成IPO辅导...