javascript的回调函数应用示例


Posted in Javascript onFebruary 20, 2014

回调函数概念:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。

JS Api 里这样解释:A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.

使用回调函数的原因:可以把调用者与被调用者分开。调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型、某些限制条件(如返回值为int)的被调用函数。

考虑一个这样的例子:

假如某个项目的底层和高层是由不同的人员协同完成.底层负责数据的存取,高层负责数据的表示.当高层要用到某个模块的数据,于是他对底层人员说,我需要你们提供满足某种需求的数据,你给我提供一个接口.

底层的人员说:我给你提供数据,怎么展示和处理则是你的事情.我不可能为你每个需求都提供一个数据接口,我给你提供一个通过的接口.你得到数据,然后自己写函数去展示.由是经过协商,双方提供了一个这样的接口:

//data表示底层提供的数据源,funcName表示高层的调用函数 function(data,funcName){ 
1.data属于情形1,由底层处理; 
2.data属于情形2,由高层处理,怎么处理呢?利用高层提供的函数funcName处理 
..... 
}

我可能还没说清楚,我们看个例子一下子就明白了
//假如提供的数据源是一整数,为某学生的分数,当num<=0,由底层处理,当n>0时由高层处理. //将下面这个函数拷贝下来存盘为1.js 
function f(num,callback){ 
if(num<0) { 
alert("调用低层函数处理!"); 
alert("分数不能为负,输入错误!"); 
}else if(num==0){ 
alert("调用低层函数处理!"); 
alert("该学生可能未参加考试!"); 
}else{ 
alert("调用高层函数处理!"); 
callback(); 
} 
}

//将下面这个test.html文件存盘与1.js在一个目录下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
<script src="1.js" type="text/javascript"></script> 
<title>无标题文档</title> 
<script type="text/javascript"> 
function test(){ 
var p=document.getElementById("pp"); 
pp.innerText=""; 
var num=document.getElementById("score").value; 
f(num,function(){ //匿名高层处理函数 
if(num<60) alert("未及格!"); 
else if(num<=90) alert("该生成绩优良!"); 
else alert("该生成绩优秀!"); }) 
pp.innerText="by since1978 qq558064!" 
} 
</script> 
</head> 
<body> 
<p> 
回调函数示例:当学生成绩score<=0分时候,由底层处理;当score>0时,由高层处理。 
</p> 
请输入学生成绩<input type="text" id="score"> 
<input type="button" onClick="test()" value=" 看看结果"> 
<p id="pp"></p> 
</body> 
</html>

运行此文件,可以看到效果
Javascript 相关文章推荐
关于IE7 IE8弹出窗口顶上
Dec 22 Javascript
for 循环性能比较 提高for循环的效率
Mar 19 Javascript
Extjs列表详细信息窗口新建后自动加载解决方法
Apr 02 Javascript
nw.js实现类似微信的聊天软件
Mar 16 Javascript
简介JavaScript中的italics()方法的使用
Jun 08 Javascript
JavaScript提升性能的常用技巧总结【经典】
Jun 20 Javascript
JS中的==运算: [''] == false —&gt;true
Jul 24 Javascript
AngularJs expression详解及简单示例
Sep 01 Javascript
在js里怎么实现Xcode里的callFuncN方法(详解)
Nov 05 Javascript
Vue.JS入门教程之自定义指令
Dec 08 Javascript
详解Angular路由之路由守卫
May 10 Javascript
js抽奖转盘实现方法分析
May 16 Javascript
JS的get和set使用示例
Feb 20 #Javascript
jQuery避免$符和其他JS库冲突的方法对比
Feb 20 #Javascript
JS 删除字符串最后一个字符的实现代码
Feb 20 #Javascript
js确认删除对话框效果的示例代码
Feb 20 #Javascript
多种方法实现load加载完成后把图片一次性显示出来
Feb 19 #Javascript
jquery无刷新验证邮箱地址实现实例
Feb 19 #Javascript
js左右弹性滚动对联广告代码分享
Feb 19 #Javascript
You might like
PHP中file_exists函数不支持中文名的解决方法
2014/07/26 PHP
php实现比较两个文件夹异同的方法
2015/06/18 PHP
PHP中遇到的时区问题解决方法
2015/07/23 PHP
PHP 计算两个时间段之间交集的天数示例
2019/10/24 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
JavaScript confirm选择判断
2008/10/18 Javascript
JavaScript判断textarea值是否为空并给出相应提示
2014/09/04 Javascript
Javascript基础知识(一)核心基础语法与事件模型
2014/09/29 Javascript
js判断日期时间有效性的方法
2015/10/24 Javascript
Bootstrap每天必学之简单入门
2015/11/19 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
2016/05/30 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
2016/10/17 Javascript
node.js基于mongodb的搜索分页示例
2017/01/22 Javascript
JavaScript遍历DOM元素的常见方式示例
2019/02/16 Javascript
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
jQuery实现简单聊天室
2020/02/08 jQuery
javascript实现滚动条效果
2020/03/24 Javascript
[58:09]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第三场 6.2
2018/06/03 DOTA
Python用GET方法上传文件
2015/03/10 Python
Python使用urllib2模块实现断点续传下载的方法
2015/06/17 Python
Python中创建字典的几种方法总结(推荐)
2017/04/27 Python
教你用一行Python代码实现并行任务(附代码)
2018/02/02 Python
python破解zip加密文件的方法
2018/05/31 Python
Django forms表单 select下拉框的传值实例
2019/07/19 Python
python实现while循环打印星星的四种形状
2019/11/23 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
python函数enumerate,operator和Counter使用技巧实例小结
2020/02/22 Python
SQL Server面试题
2013/04/04 面试题
反对形式主义、官僚主义、享乐主义和奢靡之风整改措施
2014/09/17 职场文书
六查六看个人剖析材料
2014/10/14 职场文书
文员岗位职责
2015/02/04 职场文书
工作态度不好检讨书
2015/05/06 职场文书
少先队大队委竞选口号
2015/12/25 职场文书
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python