相信在刚开始学习JavaScript的时候,不少人感到最困惑的就是回调函数了。本文经过一个小小的例子来分析回调函数的用法。对你们学习Javascript回调函数颇有帮助,有须要的能够来参考学习。java
前言函数
其实回调函数简单通俗点就是当有a和b两个函数,当a做为参数传给b,并在b中执行,这时a就是一个回调(callback)函数,若是a是一个匿名函数,则为匿名回调函数那下面们来经过一个实例来具体解释下Javascript回调函数怎么使用。学习
实例this
在好久好久之前,有一我的。code
var person;
他是我的,也就是一个对象。对象
person= {}; // 在JavaScript中,花括号就表明是一个对象
他有个名字叫小明。ip
person.name = '小明';
看一下是否是真的叫小明。回调函数
alert(person.name);
嗯,有一天,小明捡到了10块钱。io
person.money = '10块钱';
小明有一个花钱的方法 spendMoney ()
有了钱就要花,因而他打算把10块钱用掉。function
person.spendMoney =function(){ alert(this.name +"用 "+this.money +" 块钱买了漫画书!"); }
运行:
person.spendMoney();
好了,问题来了,小明花钱就非得买漫画书吗,确定不是。弹出提示:小明用10块钱买了漫画书。
事实状况应该是,这钱怎么办,仍是由他本身说了算。由于钱在小明的口袋里。
因此,就能够用回调函数了。
回调函数自己就是一个数据类型。
在javaScript中,函数的地位和java中的String
,int
,boolean
等等都是同样的,均可以当作是一个数据类型。
既然是数据类型,固然能够当成参数传递。
因而就应该这样:
person.spendMoney =function(doSomeThing){ doSomeThing(); }
没打括号的函数,就是和String
,int
同样的玩意儿。
打了个括号就是执行函数的意思。
是一个数据类型。
同样的。
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特有的回调函数的魔力。