相信在剛開始學習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特有的回調函數的魔力。