JavaScript回调(callback)函数概念自我理解及示例


Posted in Javascript onJuly 04, 2013

此文适合JavaScript入门级选手阅读,高手就可以飘过了。

先扯点闲话。在中国,有这么一种现象:不管什么词或者概念,总会有些人把这些东西解释的神乎其神,貌似搞得别人听不懂就觉得自己很厉害的样子。其实不知道有多2。我个人比较崇尚简洁明了。什么词,什么概念,如果你能用简短的一两句话让大家听明白,这才是本事。好了,闲话不扯了,进入正题。

在JavaScript里什么叫Callback“回调函数”,用我的话来讲就是把方法b当做一个参数传递个方法a,当方法a执行完后执行另外一个指定函数(这里是b函数)。来看个列子:

<html> 
<head> 
<title>Callback function test</title> 
<script language="javascript" type="text/javascript"> 
function main(callback) 
{ 
alert("I am main function"); 
alert("Invoke callback function.."); 
callback(); 
} 
function b(){ 
alert("I am callback function: b"); 
} 
function c(){ 
alert("I am callback function: c"); 
} function test() { 
main(b); 
main(c); 
} 
</script> 
</head> 
<body> 
<button onClick="test()">click me</button> 
</body> 
</html>

这里面main(b),那么b就称作回调函数,是不是很好理解?那有人会说我为什么不可以把b的调用放到main函数里呢?确实可以,但是那样你的main方法就只能调用b了。这里我们将b传递个main,或者a传递个main,那main里面的callback方法就是动态的回调函数。优点就在这里。
Javascript 相关文章推荐
js判断是否为数组的函数: isArray()
Oct 30 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
Apr 26 Javascript
JavaScript极简入门教程(三):数组
Oct 25 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
Mar 04 Javascript
详解AngularJS中自定义指令的使用
Jun 17 Javascript
JS 动态判断PC和手机浏览器实现代码
Sep 21 Javascript
AngularJS实现根据变量改变动态加载模板的方法
Nov 04 Javascript
浅谈Node.js:Buffer模块
Dec 05 Javascript
手把手教你vue-cli单页到多页应用的方法
May 31 Javascript
Node+OCR实现图像文字识别功能
Nov 26 Javascript
微信小程序实现轨迹回放的示例代码
Dec 13 Javascript
Vue解析剪切板图片并实现发送功能
Feb 04 Javascript
JS实现简单的Canvas画图实例
Jul 04 #Javascript
Jquery获取复选框被选中值的简单方法
Jul 04 #Javascript
jquery和javascript的区别(常用方法比较)
Jul 04 #Javascript
JS定时刷新页面及跳转页面的方法
Jul 04 #Javascript
浏览器打开层自动缓慢展开收缩实例代码
Jul 04 #Javascript
深入解析contentWindow, contentDocument
Jul 04 #Javascript
关于Javascript与iframe的那些事儿
Jul 04 #Javascript
You might like
下载文件的点击数回填
2006/10/09 PHP
让PHP COOKIE立即生效,不用刷新就可以使用
2011/03/09 PHP
关于PHP实现异步操作的研究
2013/02/03 PHP
解析linux下安装memcacheq(mcq)全过程笔记
2013/06/27 PHP
php addslashes 利用递归实现使用反斜线引用字符串
2013/08/05 PHP
preg_match_all使用心得分享
2014/01/31 PHP
php模拟用户自动在qq空间发表文章的方法
2015/01/07 PHP
PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
2016/05/22 PHP
laravel 自定义常量的两种方案
2019/10/14 PHP
jquery提升性能最佳实践小结
2010/12/06 Javascript
js下通过prototype扩展实现indexOf的代码
2010/12/08 Javascript
js面向对象设计用{}好还是function(){}好(构造函数)
2011/10/23 Javascript
script的async属性以非阻塞的模式加载脚本
2013/01/15 Javascript
扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路
2013/05/17 Javascript
nodeJS代码实现计算交社保是否合适
2015/03/09 NodeJs
jQuery实现的仿百度分页足迹效果代码
2015/10/30 Javascript
详解javascript中原始数据类型Null和Undefined
2015/12/17 Javascript
原生js制作日历控件实例分享
2016/04/06 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
ReactNative之FlatList的具体使用方法
2017/11/29 Javascript
React Native react-navigation 导航使用详解
2017/12/01 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
2018/07/25 Javascript
JS加载解析Markdown文档过程详解
2020/05/19 Javascript
Python中逗号的三种作用实例分析
2015/06/08 Python
浅谈function(函数)中的动态参数
2017/04/30 Python
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
python3连接MySQL数据库实例详解
2018/05/24 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
2019/09/24 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
2020/01/05 Python
css3气泡 css3关键帧动画创建的动态通知气泡
2013/02/26 HTML / CSS
美国玩具公司:U.S.Toy
2018/05/19 全球购物
授权委托书格式
2014/07/31 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
创业计划书之服装
2019/10/07 职场文书
动画《平凡职业成就世界最强》宣布制作OVA
2022/04/01 日漫
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android