成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

徹底理解JavaScript中回調(diào)函數(shù) (推薦)

RayKr / 2092人閱讀

摘要:在中回調(diào)函數(shù)非常重要,它們幾乎無(wú)處不在。首先你得先明白一點(diǎn)函數(shù)也是對(duì)象想弄明白回調(diào)函數(shù),首先的清楚地明白函數(shù)的規(guī)則。理解了函數(shù)也是對(duì)象,先不急聊回調(diào)函數(shù),先看看下面代碼只寫變量名返回的將會(huì)是方法本身,以字符串的形式表現(xiàn)出來(lái)。

在javascript中回調(diào)函數(shù)非常重要,它們幾乎無(wú)處不在。像其他更加傳統(tǒng)的編程語(yǔ)言都有回調(diào)函數(shù)概念,但是非常奇怪的是,完完整整談?wù)摶卣{(diào)函數(shù)的在線教程比較少,倒是有一堆關(guān)于call()和apply()函數(shù)的,或者有一些簡(jiǎn)短的關(guān)于callback的使用示例。
首先你得先明白一點(diǎn):

函數(shù)也是對(duì)象

 想弄明白回調(diào)函數(shù),首先的清楚地明白函數(shù)的規(guī)則。先來(lái)看個(gè)例子:

//可以這樣創(chuàng)建函數(shù)
var fn = new Function("arg1", "arg2", "return arg1 * arg2;");
fn(2, 3);   //6

 這樣做的一個(gè)好處,可以傳遞代碼給其他函數(shù),也可以傳遞正則變量或者對(duì)象(因?yàn)榇a字面上只是對(duì)象而已)。
在javascript中,函數(shù)是比較奇怪的,但它確確實(shí)實(shí)是對(duì)象。確切地說(shuō),函數(shù)是用Function()構(gòu)造函數(shù)創(chuàng)建的Function對(duì)象。Function對(duì)象包含一個(gè)字符串,字符串包含函數(shù)的javascript代碼。

理解了函數(shù)也是對(duì)象,先不急聊回調(diào)函數(shù),先看看下面代碼:

function say (value) {
    alert(value);
}
alert(say);
alert(say("hi js."));

只寫變量名 say 返回的將會(huì)是 say方法本身,以字符串的形式表現(xiàn)出來(lái)。
而在變量名后加()如say()返回的就會(huì)使say方法調(diào)用后的結(jié)果,這里是彈出value的值。

js中函數(shù)可以作為參數(shù)傳遞

再看下面兩段代碼:

function say (value) {
    alert(value);
}
function execute (someFunction, value) {
    someFunction(value);
}
execute(say, "hi js.");

function execute (someFunction, value) {
    someFunction(value);
}
execute(function(value){alert(value);}, "hi js.");

上面第一段代碼是將say方法作為參數(shù)傳遞給execute方法
第二段代碼則是直接將匿名函數(shù)作為參數(shù)傳遞給execute方法

實(shí)際上:

function say (value) {
    alert(value);
}
// 注意看下面,直接寫say方法的方法名與下面的匿名函數(shù)可以認(rèn)為是一個(gè)東西
// 這樣再看上面兩段代碼是不是對(duì)函數(shù)可以作為參數(shù)傳遞就更加清晰了
say;

function (value) {
    alert(value);
}

這里的say或者匿名函數(shù)就被稱為回調(diào)函數(shù)!

如果還不懂,看看下面并不是很完美的比喻:
你到一個(gè)商店買東西,剛好你要的東西沒(méi)有貨,于是你在店員那里留下了你的電話,過(guò)了幾天店里有貨了,店員就打了你的電話,然后你接到電話后就到店里去取了貨。在這個(gè)例子里,你的電話號(hào)碼就叫回調(diào)函數(shù),你把電話留給店員就叫登記回調(diào)函數(shù),店里后來(lái)有貨了叫做觸發(fā)了回調(diào)關(guān)聯(lián)的事件,店員給你打電話叫做調(diào)用回調(diào)函數(shù),你到店里去取貨叫做響應(yīng)回調(diào)事件。

回調(diào)函數(shù)容易混淆點(diǎn)——傳參

兩種回調(diào)函數(shù)傳參的方法:

將回調(diào)函數(shù)的參數(shù)作為與回調(diào)函數(shù)同等級(jí)的參數(shù)進(jìn)行傳遞

回調(diào)函數(shù)的參數(shù)在調(diào)用回調(diào)函數(shù)內(nèi)部創(chuàng)建

希望我對(duì)回調(diào)函數(shù)的一點(diǎn)點(diǎn)小總結(jié)能對(duì)大家有幫助,
關(guān)于回調(diào)函數(shù)還有什么問(wèn)題可以在下面留言,一起交流。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/89811.html

相關(guān)文章

  • javascript 回調(diào)函數(shù) 整理

    摘要:回調(diào)函數(shù)不是由該函數(shù)的實(shí)現(xiàn)方直接調(diào)用,而是在特定的事件或條件發(fā)生時(shí)由另外的一方調(diào)用的,用于對(duì)該事件或條件進(jìn)行響應(yīng)。若是使用回調(diào)函數(shù)進(jìn)行處理,代碼就可以繼續(xù)進(jìn)行其他任務(wù),而無(wú)需空等。參考理解回調(diào)函數(shù)理解與使用中的回調(diào)函數(shù)這篇相當(dāng)不錯(cuò)回調(diào)函數(shù) 為什么寫回調(diào)函數(shù) 對(duì)于javascript中回調(diào)函數(shù) 一直處于理解,但是應(yīng)用不好的階段,總是在別人家的代碼中看到很巧妙的回調(diào),那時(shí)候會(huì)有wow c...

    xiaowugui666 評(píng)論0 收藏0
  • ES6-7

    摘要:的翻譯文檔由的維護(hù)很多人說(shuō),阮老師已經(jīng)有一本關(guān)于的書了入門,覺(jué)得看看這本書就足夠了。前端的異步解決方案之和異步編程模式在前端開發(fā)過(guò)程中,顯得越來(lái)越重要。為了讓編程更美好,我們就需要引入來(lái)降低異步編程的復(fù)雜性。 JavaScript Promise 迷你書(中文版) 超詳細(xì)介紹promise的gitbook,看完再不會(huì)promise...... 本書的目的是以目前還在制定中的ECMASc...

    mudiyouyou 評(píng)論0 收藏0
  • JavaScript徹底理解同步、異步和事件循環(huán)(Event Loop)

    摘要:例如處理請(qǐng)求的線程處理事件的線程定時(shí)器線程讀寫文件的線程例如在中等等。事件循環(huán)事件循環(huán)是指主線程重復(fù)從消息隊(duì)列中取消息執(zhí)行的過(guò)程。事件觸發(fā)時(shí),表示異步任務(wù)完成,會(huì)將事件監(jiān)聽器函數(shù)封裝成一條消息放到消息隊(duì)列中,等待主線程執(zhí)行。 一. 單線程 我們常說(shuō)JavaScript是單線程的。 所謂單線程,是指在JS引擎中負(fù)責(zé)解釋和執(zhí)行JavaScript代碼的線程只有一個(gè)。不妨叫它主線程。 但是實(shí)...

    wenyiweb 評(píng)論0 收藏0
  • 深入前端-徹底搞懂JS的運(yùn)行機(jī)制

    摘要:瀏覽器是多進(jìn)程的詳情看我上篇總結(jié)瀏覽器執(zhí)行機(jī)制的文章深入前端徹底搞懂瀏覽器運(yùn)行機(jī)制瀏覽器每打開一個(gè)標(biāo)簽頁(yè),就相當(dāng)于創(chuàng)建了一個(gè)獨(dú)立的瀏覽器進(jìn)程。執(zhí)行異步操作事件完成,回調(diào)函數(shù)進(jìn)入。主線程從讀取回調(diào)函數(shù)并執(zhí)行。 最近看了很多關(guān)于JS運(yùn)行機(jī)制的文章,每篇都獲益匪淺,但各有不同,所以在這里對(duì)這幾篇文章里說(shuō)的很精辟的地方做一個(gè)總結(jié),參考文章鏈接見最后。本文博客地址 了解進(jìn)程和線程 進(jìn)程是應(yīng)用...

    luckyw 評(píng)論0 收藏0
  • 深入前端-徹底搞懂JS的運(yùn)行機(jī)制

    摘要:瀏覽器是多進(jìn)程的詳情看我上篇總結(jié)瀏覽器執(zhí)行機(jī)制的文章深入前端徹底搞懂瀏覽器運(yùn)行機(jī)制瀏覽器每打開一個(gè)標(biāo)簽頁(yè),就相當(dāng)于創(chuàng)建了一個(gè)獨(dú)立的瀏覽器進(jìn)程。執(zhí)行異步操作事件完成,回調(diào)函數(shù)進(jìn)入。主線程從讀取回調(diào)函數(shù)并執(zhí)行。 最近看了很多關(guān)于JS運(yùn)行機(jī)制的文章,每篇都獲益匪淺,但各有不同,所以在這里對(duì)這幾篇文章里說(shuō)的很精辟的地方做一個(gè)總結(jié),參考文章鏈接見最后。本文博客地址 了解進(jìn)程和線程 進(jìn)程是應(yīng)用...

    jaysun 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<