这篇文章主要介绍了JavaScript中的回调函数是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
回调函数是每个前端程序员都应该知道的概念之一。回调可用于数组,计时器函数,承诺,事件处理中。
回调函数
首先写一个向人打招呼的函数。
只需要创建一个接受<代码>名称> 代码参数的函数<代码>问候(名字)> 代码。这个函数应返回打招呼的消息:
function 迎接(名字),{ return 才能,“你好,,${名称}!”; } 问候(& # 39;克里斯蒂娜# 39;);,//,=祝辞,& # 39;你好,,克里斯蒂娜! & # 39;
如果向很多人打招呼该怎么办?可以用特殊的数组方法,<代码> array.map() 代码>可以实现:
const persons =,(& # 39;克里斯蒂娜# 39;,,& # 39;安娜# 39;]; const messages =, persons.map(问候); 消息;,//,=祝辞,[& # 39;你好,,克里斯蒂娜! & # 39;,,& # 39;你好,,安娜! & # 39;]
<代码> persons.map(迎接)代码>获取<代码> 代码>数人组的所有元素,并分别用每个元素作为调用参数来调用<代码>问候()代码>函数:<代码>的问候(& # 39;克里斯蒂娜# 39;)代码>,<代码>问候(& # 39;安娜# 39;)代码>。
有意思的是<代码> persons.map(迎接)代码>方法可以接受<代码>问候()代码>,函数作为参数。这样<代码>()代码>打招呼,就成了<强>回调函数强>。
<代码> persons.map(迎接)> 代码是用另一个函数作为参数的函数,因此被称为<强>高阶函数强>。
回调函数作为高阶函数的参数,高阶函数通过调用回调函数来执行操作。引用>重要的是高阶函数负责调用回调,并为其提供正确的参数。
在前面的例子中,高阶函数<代码> persons.map(迎接)代码>负责调用,<代码>问候()代码>,函数,并分别把数组中所有的元素<代码> & # 39;克里斯蒂娜# 39;代码>和<代码>安娜& # 39;代码>作为参数。
这就为识别回调提供了一条简单的规则。如果你定义了一个函数,并将其作参数提供给另一个函数的话,那么这就创建了一个回调。
你可以自己编写使用回调的高阶函数。下面是<代码> array.map() 代码>方法的等效版本:
function 地图(数组,,回调),{ const 才能;mappedArray =, []; for 才能;(const item  of 数组),{, ,,,mappedArray.push ( ,,,,,回调(项),,,,); ,,} return 才能;mappedArray; } function 迎接(名字),{ return 才能,“你好,,${名称}!”; } const persons =,(& # 39;克里斯蒂娜# 39;,,& # 39;安娜# 39;]; const messages =,地图(人,,欢迎);信息;,//,=祝辞,[& # 39;你好,,克里斯蒂娜! & # 39;,,& # 39;你好,,安娜! & # 39;]<代码>地图(数组,回调)代码>是一个高阶函数,因为它用回调函数作为参数,然后在其主体内部调用该回调函数:<代码>回调(项)代码>。
注意,常规函数(用关键字<代码> 代码>函数定义)或箭头函数(用粗箭头<代码>=祝辞代码>定义)同样可以作为回调使用。
同步回调
回调的调用方式有两种:<强>同步强>和<强>异步强>回调。
同步回调是“阻塞”的:高阶函数直到回调函数完成后才继续执行。
例如,调用<代码> map() 代码>和<代码>问候()代码>函数。
function 地图(数组,,回调),{ console.log才能(& # 39;地图(),开始# 39;); const 才能;mappedArray =, []; for 才能;(const item  of 数组),{,mappedArray.push(回调(项),} console.log才能(& # 39;地图(),完成# 39;); return 才能;mappedArray; } function 迎接(名字),{ console.log才能(& # 39;()打招呼,叫# 39;); return 才能,“你好,,${名称}!”; } const persons =,(& # 39;克里斯蒂娜# 39;); 地图(人,,欢迎);//,logs & # 39;地图(),开始# 39;//,logs & # 39;()打招呼,叫# 39;//,logs & # 39;地图(),完成# 39;其中<代码>问候()代码>,是同步回调。
同步回调的步骤:
<李>
高阶函数开始执行:<代码> & # 39;地图()开始# 39;代码>
李> <李>回调函数执行:<代码> & # 39;迎接()调用# 39;代码>
李> <李>。最后高阶函数完成它自己的执行过程:
JavaScript中的回调函数是什么