UpdateTime--2018年9月13日16点51分

1.什么是回调函数?

  在JavaScript中,回调函数具体的定义为:

  函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A。我们就说函数A叫做回调函数;

  如果没有名称(函数表达式),就叫做匿名回调函数。

  简单的来说,将函数作为参数传递给另一个方法。

2.回调函数适用场合

  jquery 页面加载完毕  $(function(){"要执行操作"});

  jquery iframe页面加载完毕 $('#iframe').load(function(){"要执行操作"});

  jquery ajax调用,绑定事件,setTimeout(),setInterval()。。。

3.回调函数不带参数调用

  回调函数为普通函数

  方式一:推荐使用

function parentFun (callback) {
callback();
} function childFun () {
alert("回调函数");
}
// 调用
parentFun(childFun);

  方式二

function parentFun (callback) {
eval(callback);
} function childFun () {
alert("回调函数");
}
// 调用
parentFun("childFun()");  

  回调函数为匿名函数

function parentFun (callback) {
callback();
}
// 调用
parentFun(function(){
alert("匿名函数作为回调函数");
});

4.回调函数带参调用

  回调函数为普通函数

  方式一(推荐使用)

function parentFun (callback) {
eval(callback);
} function childFun (param) {
alert(param);
}
// 调用
parentFun('childFun("回调函数")');

  方式二

function parentFun (callback,param) {
callback(param);
} function childFun (param) {
alert(param);
}
// 调用
parentFun(childFun,"回调函数");

  方式三:推荐使用

function parentFun (callback) {
callback();
} function childFun (param) {
alert(param);
}
// 调用
parentFun(function(){
childFun("回调函数");
});  

  方式四

function parentFun (callback,param) {
callback(param);
} function childFun (param) {
alert(param);
}
// 调用
parentFun(function(param){
childFun(param);
},"回调函数");

  方式五:不推荐使用

function parentFun (callback) {
callback("回调函数");
} function childFun (param) {
alert(param);
}
// 调用
parentFun(childFun);

  小结:

  方式一和方式五虽然可以实现,但是不支持使用,因为jquery插件一般都不支持这种调用方式,通常支持的是方式三;

  方式三和方式四本质上还是通过匿名函数实现的;

  方式二和方式四都是将回调函数所需的入参作为主函数的一个参数来实现的。

  回调函数为匿名函数

function parentFun (callback,param) {
callback(param);
}
// 调用
parentFun(function(param){
alert(param);
},"回调函数");

5.回调函数执行时机

  同步执行的情况,回调函数一般是最后执行;

  异步执行的情况(ajax),回调函数不一定会执行。

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

相关推荐:

 

最新文章

  1. Placeholder在IE8的兼容问题
  2. java多线程--多线程基础小结
  3. Android监听Button和ImageButton控件的点击事件
  4. Day1 summary
  5. oc中对象的初始化
  6. Oracle常用命令13(数据库的启动、关闭)
  7. sqlserver 出现 因为文件组 'PRIMARY' 已满 的解决办法 有可能是磁盘剩余空间不足 导致的
  8. Flex 自动获取焦点 监听全局键盘事件
  9. Children of the Candy Corn
  10. Entity Framework技巧系列之七 - Tip 26 – 28
  11. PHP的curl实现get,post 和 cookie
  12. MyBatis通用Mapper开发
  13. PHP常用功能模块
  14. 支持行单击、双击事件的GridView和DataList控件(译)
  15. Armitage攻击winxp——P201421410029
  16. ubuntu ibus pinyin输入法异常
  17. docker的完整解决方案2
  18. day16正则表达式作业
  19. Ubuntu 14.04 installation & bugs on Alienware-13
  20. html5 canvas结构基础

热门文章

  1. 2017-2018-1 JAVA实验站 冲刺 day03
  2. 【Python笔记】十分钟搞定pandas
  3. Loj10170骑士
  4. OpenAPI安全防护
  5. Codeforces Round #300 B. Quasi Binary 水题
  6. layoutit note
  7. Java代码优化方案 J2ME内存优化
  8. Druid 连接泄漏监测
  9. ubuntn 内核升级到LINUX v4.11.8:
  10. Known BREAKING CHANGES from NH3.3.3.GA to 4.0.0