关于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 相关文章推荐
出现“不能执行已释放的Script代码”错误的原因及解决办法
Aug 29 Javascript
JavaScript对Cookie进行读写操作实例
Jul 25 Javascript
分享15个大家都熟知的jquery小技巧
Dec 02 Javascript
jQuery的Ajax用户认证和注册技术实例教程(附demo源码)
Dec 08 Javascript
sso跨域写cookie的一段js脚本(推荐)
May 25 Javascript
JavaScript作用域示例详解
Jul 07 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
Nov 21 Javascript
Node层模拟实现multipart表单的文件上传示例
Jan 02 Javascript
js合并两个数组生成合并后的key:value数组
May 09 Javascript
面试题:react和vue的区别分析
Apr 08 Javascript
js实现随机点名程序
Sep 17 Javascript
JavaScript中变量提升机制示例详解
Dec 27 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将字符串转化成date存入数据库的两种方式
2014/04/28 PHP
PHP网站开发中常用的8个小技巧
2015/02/13 PHP
php微信公众号开发(4)php实现自定义关键字回复
2016/12/15 PHP
浅谈PHP中new self()和new static()的区别
2017/08/11 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
关于laravel5.5的定时任务详解(demo)
2019/10/23 PHP
在b/s开发中经常用到的javaScript技术
2006/08/23 Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
2013/11/18 Javascript
js统计页面的来访次数实现代码
2014/05/09 Javascript
js选项卡的实现方法
2015/02/09 Javascript
Node.js实现兼容IE789的文件上传进度条
2016/09/02 Javascript
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
2016/11/22 Javascript
javascript常用经典算法详解
2017/01/11 Javascript
微信小程序实现给循环列表添加点击样式实例
2017/04/26 Javascript
Vue常用指令详解分析
2018/08/19 Javascript
vue中当图片地址无效的时候,显示默认图片的方法
2018/09/18 Javascript
js继承的这6种方式!(上)
2019/04/23 Javascript
python实现百度关键词排名查询
2014/03/30 Python
十个Python程序员易犯的错误
2015/12/15 Python
Python爬虫代理IP池实现方法
2017/01/05 Python
python运行其他程序的实现方法
2017/07/14 Python
python微信公众号之关注公众号自动回复
2018/10/25 Python
解决python Markdown模块乱码的问题
2019/02/14 Python
Django多数据库配置及逆向生成model教程
2020/03/28 Python
使用HTML5的File实现base64和图片的互转
2013/08/01 HTML / CSS
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
2016/05/09 面试题
几个Shell Script面试题
2014/04/18 面试题
电子技术专业中专生的自我评价
2013/12/17 职场文书
法学个人求职信范文
2014/01/27 职场文书
广告传媒专业应届生求职信
2014/03/01 职场文书
四风问题自查自纠工作情况报告
2014/10/28 职场文书
院系推荐意见
2015/06/05 职场文书
关于艺术节的开幕致辞
2016/03/04 职场文书
Java 在生活中的 10 大应用
2021/11/02 Java/Android
升级 Win11 还是坚守 Win10?微软 Win11 新系统缺失功能大盘点
2022/04/05 数码科技
python实现学员管理系统(面向对象版)
2022/06/05 Python