什么是回调函数?
一个回调函数,也被称为高阶函数,是一个被作为参数传递给另一个函数(在这里我们把另一个函数叫做“otherFunction”)的函数,
回调函数在otherFunction中被调用。
一个回调函数本质上是一种编程模式(为一个常见问题创建的解决方案),因此,使用回调函数也叫做回调模式。
一个函数作为参数传递给了click方法。click方法会调用(或者执行)我们传递给它的函数。这是Javascript中回调函数的典型用法,
它在jQuery中广泛被使用。
回调函数是怎样运作的?
因为函数在Javascript中是第一类对象,我们像对待对象一样对待函数,因此我们能像传递变量一样传递函数,
在函数中返回函数,在其他函数中使用函数。当我们将一个回调函数作为参数传递给另一个函数是,我们仅仅传递了函数定义。
我们并没有在参数中执行函数。我们并不传递像我们平时执行函数一样带有一对执行小括号()的函数。
需要注意的很重要的一点是回调函数并不会马上被执行。它会在包含它的函数内的某个特定时间点被“回调”(就像它的名字一样)
这个匿名函数稍后会在函数体内被调用。即使有名字,它依然在包含它的函数内通过arguments对象获取。
回调函数是闭包
都能够我们将一个毁掉函数作为变量传递给另一个函数时,这个毁掉函数在包含它的函数内的某一点执行,就好像这个回调函数是在包含它的函数中定义的一样。这意味着回调函数本质上是一个闭包。
正如我们所知,闭包能够进入包含它的函数的作用域,因此回调函数能获取包含它的函数中的变量,以及全局作用域中的变量。
实现回调函数的基本原理
使用命名或匿名函数作为回调
在参数位置定义的匿名函数作为回调函数。这是在回调函数使用中的一种普遍的方法。
另一种常见的模式是定义一个命名函数并将函数名作为变量传递给函数。
传递参数给回调函数
既然回调函数在执行时仅仅是一个普通函数,我们就能给它传递参数。我们能够传递任何包含它的函数的属性(或者全局变量)作为回调函数的参数
在执行之前确保回调函数是一个函数
如果没有适当的检查,如果回调函数的参数中没有一个回调函数或者传递的回调函数事实上并不是一个函数,
我们的代码将会导致运行错误。
来源:https://www.cnblogs.com/MDZZZ/p/12442436.html