关于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 继承详解(三)
Jul 13 Javascript
javascript 操作cookies及正确使用cookies的属性
Oct 15 Javascript
IE6不能修改NAME问题的解决方法
Sep 03 Javascript
深入理解JavaScript系列(2) 揭秘命名函数表达式
Jan 15 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
Oct 09 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
Apr 27 Javascript
vue中echarts3.0自适应的方法
Feb 26 Javascript
浅谈Webpack 持久化缓存实践
Mar 22 Javascript
node.js使用免费的阿里云ip查询获取ip所在地【推荐】
Sep 03 Javascript
iview实现图片上传功能
Jun 29 Javascript
基于JavaScript的数据结构队列动画实现示例解析
Aug 06 Javascript
Taro小程序自定义顶部导航栏功能的实现
Dec 17 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网站提速三大“软”招
2006/10/09 PHP
PHP 文章中的远程图片采集到本地的代码
2009/07/30 PHP
CI框架整合widget(页面格局)的方法
2016/05/17 PHP
js自带函数备忘 数组
2006/12/29 Javascript
一直复略了的一个问题,关于表单重复提交
2007/02/15 Javascript
Jquery replace 字符替换实现代码
2010/12/02 Javascript
jQuery在IE下使用未闭合的xml代码创建元素时的Bug介绍
2012/01/10 Javascript
innerText和textContent对比及使用介绍
2013/02/27 Javascript
关于JS字符串函数String.replace()
2013/04/07 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
iScroll.js 使用方法参考
2016/05/16 Javascript
巧用Vue.js+Vuex制作专门收藏微信公众号的app
2016/11/03 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
2016/11/03 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
2017/02/14 Javascript
angular.js+node.js实现下载图片处理详解
2017/03/31 Javascript
基于 Vue.js 之 iView UI 框架非工程化实践记录(推荐)
2017/11/21 Javascript
Vue 表情包输入组件的实现代码
2019/01/21 Javascript
VScode格式化ESlint方法(最全最好用方法)
2019/09/10 Javascript
layui prompt 设置允许空白提交的方法
2019/09/24 Javascript
js实现简易计算器功能
2019/10/18 Javascript
Vue如何提升首屏加载速度实例解析
2020/06/25 Javascript
Python开发微信公众平台的方法详解【基于weixin-knife】
2017/07/08 Python
Python 网页解析HTMLParse的实例详解
2017/08/10 Python
K-近邻算法的python实现代码分享
2017/12/09 Python
python 给DataFrame增加index行名和columns列名的实现方法
2018/06/08 Python
Python中shapefile转换geojson的示例
2019/01/03 Python
开启Django博客的RSS功能的实现方法
2020/02/17 Python
python with语句的原理与用法详解
2020/03/30 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
No7 Beauty美国官网:英国国民护肤品牌
2019/10/31 全球购物
本科毕业自我鉴定
2014/03/20 职场文书
篮球赛新闻稿
2015/07/17 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书
pytorch显存一直变大的解决方案
2021/04/08 Python