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 相关文章推荐
一个简单的JavaScript数据缓存系统实现代码
Oct 24 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
Aug 14 Javascript
document.write()及其输出内容的样式、位置控制
Aug 12 Javascript
jQuery的实例及必知重要的jQuery选择器详解
May 20 Javascript
微信小程序 template模板详解及实例代码
Mar 09 Javascript
基于 Vue 的树形选择组件的示例代码
Aug 18 Javascript
vue中遇到的坑之变化检测问题(数组相关)
Oct 13 Javascript
js经验分享 JavaScript反调试技巧
Mar 10 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
Sep 20 Javascript
小程序点餐界面添加购物车左右摆动动画
Sep 23 Javascript
ant design vue中日期选择框混合时间选择器的用法说明
Oct 27 Javascript
js定时器出现第一次延迟的原因及解决方法
Jan 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
php根据日期判断星座的函数分享
2014/02/13 PHP
CI(Codeigniter)的Setting增强配置类实例
2016/01/06 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
Firefox中autocomplete=&quot;off&quot; 设置不起作用Bug的解决方法
2011/03/25 Javascript
用jQuery中的ajax分页实现代码
2011/09/20 Javascript
在JS中如何调用JSP中的变量
2014/01/22 Javascript
JavaScript插件化开发教程 (四)
2015/01/27 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
Easyui Treegrid改变默认图标的方法
2016/04/29 Javascript
Javascript基础教程之比较null和undefined值
2016/05/16 Javascript
js 基础篇必看(点击事件轮播图的简单实现)
2016/08/20 Javascript
微信小程序block的使用教程
2018/04/01 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
在vue中实现点击选择框阻止弹出层消失的方法
2018/09/15 Javascript
Vue使用NPM方式搭建项目
2018/10/25 Javascript
JavaScript内置对象math,global功能与用法实例分析
2019/06/10 Javascript
vue中 this.$set的用法详解
2019/09/06 Javascript
Python中的各种装饰器详解
2015/04/11 Python
利用Python的Django框架中的ORM建立查询API
2015/04/20 Python
python中argparse模块用法实例详解
2015/06/03 Python
基于numpy中数组元素的切片复制方法
2018/11/15 Python
使用python绘制3维正态分布图的方法
2018/12/29 Python
python用opencv批量截取图像指定区域的方法
2019/01/24 Python
opencv导入头文件时报错#include的解决方法
2019/07/31 Python
python pillow模块使用方法详解
2019/08/30 Python
Python实现队列的方法示例小结【数组,链表】
2020/02/22 Python
谈谈对css属性box-sizing的了解
2017/01/04 HTML / CSS
Michael Kors加拿大官网:购买设计师手袋、手表、鞋子、服装等
2019/03/16 全球购物
医学专业应届生的自我评价
2014/02/28 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
音乐学专业求职信
2014/07/22 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
旷工辞退通知书
2015/04/17 职场文书
幼儿园辞职信
2015/05/13 职场文书
太行山上观后感
2015/06/05 职场文书
Redis sentinel哨兵集群的实现步骤
2022/07/15 Redis