博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
回调函数
阅读量:6302 次
发布时间:2019-06-22

本文共 1400 字,大约阅读时间需要 4 分钟。

 
 
 
这个参数其实就是一个函数,可以写在母函数之内或者之外都可以,只不过是作为参数罢了
 
  1. <html> 
  2.  
  3. <head> 
  4.  
  5. <title>回调函数(callback)</title> 
  6. <script language="javascript" type="text/javascript"> 
  7. function a(callback) 
  8. {    
  9.     alert("我是parent函数a!"); 
  10.     alert("调用回调函数"); 
  11.     callback(); 
  12. function b(){ 
  13. alert("我是回调函数b"); 
  14.  
  15. function c(){ 
  16. alert("我是回调函数c"); 
  17.  
  18.  
  19. function test() 
  20.     a(b); 
  21.    a(c); 
  22.  
  23. </script> 
  24. </head> 
  25.  
  26. <body> 
  27. <h1>学习js回调函数</h1> 
  28. <button onClick=test()>click me</button> 
  29. <p>应该能看到调用了两个回调函数</p> 
  30. </body> 
  31.  
    来源: 
 

首先还是从jquery网站上的英文定义入手,身为国人,我真感到悲剧。一个回调的定义被国内的“高手”解释成什么样,就在那绕圈子,貌似只有把你绕进去了,他才算高手。浮云,一切都是浮云。

A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.

这是js里的解释了,其他语言的算我没说。

字面上理解下来就是,回调就是一个函数的调用过程。那么就从理解这个调用过程开始吧。函数a有一个参数,这个参数是个函数b,当函数a执行完以后执行函数b。那么这个过程就叫回调。

其实中文也很好理解:回调,回调,就是回头调用的意思。函数a的事先干完,回头再调用函数b。

举个现实的例子:约会结束后你送你女朋友回家,离别时,你肯定会说:“到家了给我发条信息,我很担心你。”对不,然后你女朋友回家以后还真给你发了条信息。小伙子,你有戏了。

其实这就是一个回调的过程。你留了个函数b(要求女朋友给你发条信息)给你女朋友,然后你女朋友回家,回家的动作是函数a。她必须先回到家以后,函数a的内容执行完了,再执行函数b,然后你就收到一条信息了。

这里必须清楚一点:函数b是你以参数形式传给函数a的,那么函数b就叫回调函数。

 也许有人有疑问了:一定要以参数形式传过去吗,我不可以直接在函数a里面调用函数b吗?确实可以。求解中。

<解惑:如果你直接在函数a里调用的话,那么这个回调函数就被限制死了。但是使用函数做参数就有下面的好处:当你a(b)的时候函数b就成了回调函数,而你还可以a(c)这个时候,函数c就成了回调函数。如果你写成了function a(){...;b();}就失去了

 
 
 
 
函数有call和apply方法。可以在函数执行时动态的绑定上下文。
函数的上下文主要影响函数中的this对象。 正常情况下this对象是根据运行上下文自动指定的。 但是用call方法或者apply方法可以手动设置上下文。相当于可以随意调整函数中的this对象指向谁。

转载于:https://www.cnblogs.com/wuqingzangyue/p/5770086.html

你可能感兴趣的文章
我的友情链接
查看>>
2012-2013中国IT技术应用趋势调查报告
查看>>
Blobxfer
查看>>
如何在 Outlook 2010 中設定特定寄件者郵件顯示的字型與顏色
查看>>
linux NFS 安装与配置
查看>>
Linux中{n..m}的用法
查看>>
postfix邮件系统搭建手册(openldap)
查看>>
运维工程师的职责和前景
查看>>
JVM性能调优监控工具jps、jstack、jstat、jmap、jinfo使用详解
查看>>
Java采用Jacob调用SAPI实现合成语音
查看>>
模板匹配 cvMatchTemplate
查看>>
80后IT民工谈编程学习|开发技巧
查看>>
C++ map和unordered_map自定义key
查看>>
TCP协议之<你好——再见>
查看>>
如何在 Bash 中删除“除某些文件外的所有文件”?
查看>>
IIS 7.0配置PHP环境
查看>>
duird.io 支持不同版本的 hadoop
查看>>
apache基于域名的虚拟主机配置
查看>>
Docker的技术组件
查看>>
F5 LTM iControl REST APi Url 自动化,查看,增加,启停,Pool&Member&irule
查看>>