初学js的时候,被回调函数搞得很晕,现在回过头来总结一下什么是回调函数。

  我们先来看看回调的英文定义:A callback is a function that is passed as an argument to another function and is executed after its parent function has completed。

  字面上的理解,回调函数就是一个参数,将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数。这个过程就叫做回调。

  其实也很好理解对吧,回调,回调,就是回头调用的意思。主函数的事先干完,回头再调用传进来的那个函数。但是以前看过很多博客,他们总是将回调函数解释的云里雾里,很高深的样子。

  举一个别人举过的例子:约会结束后你送你女朋友回家,离别时,你肯定会说:“到家了给我发条信息,我很担心你。” 对不,然后你女朋友回家以后还真给你发了条信息。小伙子,你有戏了。其实这就是一个回调的过程。你留了个参数函数(要求女朋友给你发条信息)给你女朋友,然后你女朋友回家,回家的动作是主函数。她必须先回到家以后,主函数执行完了,再执行传进去的函数,然后你就收到一条信息了。

  现在基本理解回调函数的意思了吧。不理解的话没关系,我们用代码说话。

//定义主函数,回调函数作为参数
function A(callback) {callback();  console.log('我是主函数');
}//定义回调函数
function B(){setTimeout("console.log('我是回调函数')", 3000);//模仿耗时操作
}//调用主函数,将函数B传进去
A(B);//输出结果
我是主函数
我是回调函数

上面的代码中,我们先定义了主函数和回调函数,然后再去调用主函数,将回调函数传进去。

  定义主函数的时候,我们让代码先去执行callback()回调函数,但输出结果却是后输出回调函数的内容。这就说明了主函数不用等待回调函数执行完,可以接着执行自己的代码。所以一般回调函数都用在耗时操作上面。比如ajax请求,比如处理文件等。

js中回调函数的理解 举例说明js回调函数相关推荐

  1. JS中同步与异步的理解

    你应该知道,javascript语言是一门"单线程"的语言,不像java语言,类继承Thread再来个thread.start就可以开辟一个线程,所以,javascript就像一条 ...

  2. Js中函数式编程的理解

    函数式编程的理解 函数式编程是一种编程范式,可以理解为是利用函数把运算过程封装起来,通过组合各种函数来计算结果.函数式编程与命令式编程最大的不同其实在于,函数式编程关心数据的映射,命令式编程关心解决问 ...

  3. 在Node.js中使用事件,监听器,定时器和回调

    Node.js通过其强大的事件驱动模型提供了可扩展性和性能,本篇文章的重点是理解该模型,以及它是如何不同于大部分Web服务器采用的传统线程模型的.了解事件模型至关重要,因为它可能迫使你改变设计应用程序 ...

  4. js中的prototype的理解

    2019独角兽企业重金招聘Python工程师标准>>> JS中的prototype是JS中比较难理解的一个部分 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原 ...

  5. JS中对于prototype的理解

    JS中的prototype是JS中比较难理解的一个部分 本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个 ...

  6. JS中[感叹号]function(){}()的理解

    这种写法,是一种`立即执行函数`的写法,即IIFE等设计模式.这种函数在函数定义的地方就直接执行了. 理解IIFE设计模式的关键是要认识到,在ES6之前,JavaScript仅具有函数作用域(因此缺少 ...

  7. C语言中函数的定义举例说明,C语言函数的定义与使用

    <C语言函数的定义与使用>由会员分享,可在线阅读,更多相关<C语言函数的定义与使用(5页珍藏版)>请在人人文库网上搜索. 1.讲义十三 C语言函数的定义与使用一.函数的定义:1 ...

  8. JS中setInterval、setTimeout不能传递带参数的函数的解决方法

    setInterval 和 setTimeout 这两个函数比较好用,但会遇到比如说我隔个几秒后要执行的函数是带参数的,这种情况怎么办?可以用匿名函数包装处理 //不带参数的函数function te ...

  9. 为什么JS是单线程?JS中的Event Loop(事件循环)?JS如何实现异步?setimeout?

    https://segmentfault.com/a/1190000012806637 https://www.jianshu.com/p/93d756db8c81 首先,请牢记2点: (1) JS是 ...

最新文章

  1. Kali Linux安装Google中文输入法(只需5步)
  2. Transformer入门篇-深度万字长文带你轻松入门深度学习框架
  3. RPOPLPUSH用法(转)
  4. C++/C中mutalbe与volatile的详解
  5. 学 Python 最大的 1 个误区,看看你中招了吗?
  6. 树莓派 pip安装mysql_树莓派 pip 手动安装
  7. Python中IOBase详解
  8. DNS(1) DNS基本概念和域名系统
  9. java(22) - 异常详解
  10. Linux 字符集问题
  11. 树莓派 ubuntu gpio_如何给树莓派安装操作系统
  12. Python语言实现用于动物分类的产生式系统
  13. [CISCN2019 总决赛 Day2 Web1]Easyweb
  14. 风雨萧关道【电视专题片解说词】
  15. 【zer0pts CTF 2022】 Anti-Fermat(p、q生成不当)
  16. 哲学生活中必背的哲学原理
  17. 2022 极术通讯-安谋科技参与起草的PSA相关物联网终端安全标准介绍(电信终端产业协会发布)
  18. 编程语言中一些令人抓狂的规则
  19. 数据分析师的就业前景如何?
  20. line-height1.5和line-height:150%的区别

热门文章

  1. 在Excel中使用VBA来筛选数据
  2. NAG: Network for Adversary Generation 笔记
  3. DebianLinux下如何安装软件(转)
  4. suspicious number
  5. ROS同时订阅多个话题 Python
  6. 二维表转换为一维列表
  7. 【STM32F407的DSP教程】第24章 DSP变换运算-傅里叶变换
  8. CSDN首例Python自动化运维实战:从Linux系统中收集数据
  9. iOS app脚手架
  10. 【计算机网络:自顶向下方法】(一)计算机网络和英特网