关于Javascript回调函数的一个妙用


Posted in Javascript onAugust 29, 2016

前言

其实回调函数简单通俗点就是当有a和b两个函数,当a作为参数传给b,并在b中执行,这时a就是一个回调(callback)函数,如果a是一个匿名函数,则为匿名回调函数那下面们来通过一个实例来具体解释下Javascript回调函数怎么使用。

实例

在很久很久以前,有一个人。

var person;

他是个人,也就是一个对象。

person= {}; // 在JavaScript中,花括号就代表是一个对象

他有个名字叫小明。

person.name = '小明';

看一下是不是真的叫小明。

alert(person.name);

嗯,有一天,小明捡到了10块钱。

person.money = '10块钱';

有了钱就要花,于是他打算把10块钱用掉。

小明有一个花钱的方法 spendMoney ()

person.spendMoney =function(){  alert(this.name +"用 "+this.money +" 块钱买了漫画书!");  }

运行:

person.spendMoney();

弹出提示:小明用10块钱买了漫画书。

好了,问题来了,小明花钱就非得买漫画书吗,肯定不是。

事实情况应该是,这钱怎么办,还是由他自己说了算。因为钱在小明的口袋里。

所以,就可以用回调函数了。

回调函数本身就是一个数据类型。

在javaScript中,函数的地位和java中的Stringintboolean等等都是一样的,都可以看成是一个数据类型。

既然是数据类型,当然可以当成参数传递。

于是就应该这样:

person.spendMoney =function(doSomeThing){  doSomeThing();  }

打了个括号就是执行函数的意思。

没打括号的函数,就是和Stringint一样的玩意儿。

是一个数据类型。

一样的。

JAVA里面会这么写:

String str ="HelloWorld!";

在JavaScript中,函数也是一样的。

var say =function(){ 

   alert('HelloWorld');

}

这时候的say就是一个数据类型。

因为没有打括号,打了括号他才会执行!

小明用十块钱做什么,他自己说了算。

person.spendMoney(function(){});

这样就是把函数传进去了。

把函数传入spendMoney方法的目的就是让函数在里面执行的。

所以:

person.spendMoney =function(doSomeThing){  doSomeThing(); }

里面就打了括号,代表要执行这个函数。

具体做什么,自己决定。

person.spendMoney(function(){  alert('还是把钱存起来吧!'); });

总结

就是可以将函数作为一个参数,传入一个方法内,并且能够在该方法中执行这个函数,这也就是js特有的回调函数的魔力。

以上就是关于Javascript回调函数用法的全部内容,希望对大家的学习和工作能有所帮助。如果有疑问可以留言讨论。

Javascript 相关文章推荐
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
Oct 25 Javascript
一个javascript图片阅览组件
Nov 09 Javascript
使用JQUERY进行后台页面布局控制DIV实现左右式
Jan 07 Javascript
jquery中交替点击事件的实现代码
Feb 14 Javascript
JavaScript 学习笔记之操作符(续)
Jan 14 Javascript
基于jquery编写分页插件
Mar 07 Javascript
纯js实现瀑布流布局及ajax动态新增数据
Apr 07 Javascript
javascript淘宝主图放大镜功能
Oct 20 Javascript
BootStrap3中模态对话框的使用
Jan 06 Javascript
浅析node应用的timing-attack安全漏洞
Feb 28 Javascript
基于express中路由规则及获取请求参数的方法
Mar 12 Javascript
layui-select动态选中值的例子
Sep 23 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
Aug 28 #Javascript
利用jQuery的动画函数animate实现豌豆发射效果
Aug 28 #Javascript
教你如何在Node.js中使用jQuery
Aug 28 #Javascript
分享JavaScript监听全部Ajax请求事件的方法
Aug 28 #Javascript
Node.js 日志处理模块log4js
Aug 28 #Javascript
node.js中 stream使用教程
Aug 28 #Javascript
ionic组件ion-tabs选项卡切换效果实例
Aug 27 #Javascript
You might like
PHP array_multisort() 函数的深入解析
2013/06/20 PHP
用php简单实现加减乘除计算器
2014/01/06 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
2016/09/01 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
PHP html_entity_decode()函数讲解
2019/02/25 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
2019/10/15 PHP
PHP Swoole异步Redis客户端实现方法示例
2019/10/24 PHP
JavaScript 学习笔记(十四) 正则表达式
2010/01/22 Javascript
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
jQuery实现平滑滚动的标签分栏切换效果
2015/08/28 Javascript
JavaScript与ActionScript3两者的同性与差异性
2016/09/22 Javascript
js实现字符全排列算法的简单方法
2017/05/01 Javascript
微信小程序学习之数据处理详解
2017/07/05 Javascript
vue语法之拼接字符串的示例代码
2017/10/25 Javascript
微信小程序实现人脸识别
2018/05/25 Javascript
nodejs通过钉钉群机器人推送消息的实现代码
2019/05/05 NodeJs
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
layui在form表单页面通过Validform加入简单验证的方法
2019/09/06 Javascript
编写v-for循环的技巧汇总
2020/12/01 Javascript
简单介绍Python中的try和finally和with方法
2015/05/05 Python
详细讲解Python中的文件I/O操作
2015/05/24 Python
使用Python3制作TCP端口扫描器
2017/04/17 Python
Python随机数用法实例详解【基于random模块】
2017/04/18 Python
利用Python如何将数据写到CSV文件中
2018/06/05 Python
Python编程深度学习绘图库之matplotlib
2018/12/28 Python
python实现简单的井字棋游戏(gui界面)
2021/01/22 Python
联想美国官方商城:Lenovo美国
2017/06/19 全球购物
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
旅游节目策划方案
2014/05/26 职场文书
大学军训的体会
2014/11/08 职场文书
消防安全月活动总结
2015/05/08 职场文书
费用申请报告范文
2015/05/15 职场文书
鲁滨孙漂流记读书笔记
2015/06/30 职场文书
golang 如何通过反射创建新对象
2021/04/28 Golang
Apache Pulsar集群搭建部署详细过程
2022/02/12 Servers