在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中的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特有的回調函數的魔力。
免責聲明: 博客中所有的圖片素材均來自百度搜索,僅供學習交流,如有問題請聯系我,侵立刪,謝謝。