自学jQuery的时候,看到一英文词(Callback),顿时背部隐隐冒冷汗。迅速google之,发现原来中文翻译成回调。也就是回调函数了。不懂啊,因而在google回调函数,发现网上的中文解释实在是太“深奥”了,我认可本身才疏学浅了。看了几个回调的例子后,貌似有点理解了。下面是我对回调函数的理解,要是理解错了,请指正,不甚感激。javascript
首先仍是从jquery网站上的英文定义入手,身为国人,我真感到悲剧。一个回调的定义被国内的“高手”解释成什么样,就在那绕圈子,貌似只有把你绕进去了,他才算高手。浮云,一切都是浮云。html
A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.java
这是js里的解释了,其余语言的算我没说。jquery
字面上理解下来就是,回调就是一个函数的调用过程。那么就从理解这个调用过程开始吧。函数a有一个参数,这个参数是个函数b,当函数a执行完之后执行函数b。那么这个过程就叫回调。函数
其实中文也很好理解:回调,回调,就是回头调用的意思。函数a的事先干完,回头再调用函数b。学习
举个现实的例子:约会结束后你送你女友回家,离别时,你确定会说:“到家了给我发条信息,我很担忧你。”对不,而后你女友回家之后还真给你发了条信息。小伙子,你有戏了。网站
其实这就是一个回调的过程。你留了个函数b(要求女友给你发条信息)给你女友,而后你女友回家,回家的动做是函数a。她必须先回到家之后,函数a的内容执行完了,再执行函数b,而后你就收到一条信息了。google
这里必须清楚一点:函数b是你以参数形式传给函数a的,那么函数b就叫回调函数。spa
也许有人有疑问了:必定要以参数形式传过去吗,我不能够直接在函数a里面调用函数b吗?确实能够。求解中。.net
<解惑:若是你直接在函数a里调用的话,那么这个回调函数就被限制死了。可是使用函数作参数就有下面的好处:当你a(b)的时候函数b就成了回调函数,而你还能够a(c)这个时候,函数c就成了回调函数。若是你写成了function a(){...;b();}就失去了变量的灵活性。>
下面用代码来证明个人理解。
<html> <head> <title>回调函数(callback)</title> <script language="javascript" type="text/javascript"> function a(callback) { alert("我是parent函数a!"); alert("调用回调函数"); callback(); } function b(){ alert("我是回调函数b"); } function c(){ alert("我是回调函数c"); } function test() { a(b); a(c); } </script> </head> <body> <h1>学习js回调函数</h1> <button onClick=test()>click me</button> <p>应该能看到调用了两个回调函数</p> </body> </html>