摘要:在中回調函數非常重要,它們幾乎無處不在。首先你得先明白一點函數也是對象想弄明白回調函數,首先的清楚地明白函數的規則。理解了函數也是對象,先不急聊回調函數,先看看下面代碼只寫變量名返回的將會是方法本身,以字符串的形式表現出來。
在javascript中回調函數非常重要,它們幾乎無處不在。像其他更加傳統的編程語言都有回調函數概念,但是非常奇怪的是,完完整整談論回調函數的在線教程比較少,倒是有一堆關于call()和apply()函數的,或者有一些簡短的關于callback的使用示例。
首先你得先明白一點:
想弄明白回調函數,首先的清楚地明白函數的規則。先來看個例子:
//可以這樣創建函數 var fn = new Function("arg1", "arg2", "return arg1 * arg2;"); fn(2, 3); //6
這樣做的一個好處,可以傳遞代碼給其他函數,也可以傳遞正則變量或者對象(因為代碼字面上只是對象而已)。
在javascript中,函數是比較奇怪的,但它確確實實是對象。確切地說,函數是用Function()構造函數創建的Function對象。Function對象包含一個字符串,字符串包含函數的javascript代碼。
理解了函數也是對象,先不急聊回調函數,先看看下面代碼:
function say (value) { alert(value); } alert(say); alert(say("hi js."));
js中函數可以作為參數傳遞只寫變量名 say 返回的將會是 say方法本身,以字符串的形式表現出來。
而在變量名后加()如say()返回的就會使say方法調用后的結果,這里是彈出value的值。
再看下面兩段代碼:
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方法作為參數傳遞給execute方法
第二段代碼則是直接將匿名函數作為參數傳遞給execute方法
實際上:
function say (value) { alert(value); } // 注意看下面,直接寫say方法的方法名與下面的匿名函數可以認為是一個東西 // 這樣再看上面兩段代碼是不是對函數可以作為參數傳遞就更加清晰了 say; function (value) { alert(value); }
這里的say或者匿名函數就被稱為回調函數!
如果還不懂,看看下面并不是很完美的比喻:
你到一個商店買東西,剛好你要的東西沒有貨,于是你在店員那里留下了你的電話,過了幾天店里有貨了,店員就打了你的電話,然后你接到電話后就到店里去取了貨。在這個例子里,你的電話號碼就叫回調函數,你把電話留給店員就叫登記回調函數,店里后來有貨了叫做觸發了回調關聯的事件,店員給你打電話叫做調用回調函數,你到店里去取貨叫做響應回調事件。
兩種回調函數傳參的方法:
將回調函數的參數作為與回調函數同等級的參數進行傳遞
回調函數的參數在調用回調函數內部創建
希望我對回調函數的一點點小總結能對大家有幫助,
關于回調函數還有什么問題可以在下面留言,一起交流。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/89811.html
摘要:回調函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用于對該事件或條件進行響應。若是使用回調函數進行處理,代碼就可以繼續進行其他任務,而無需空等。參考理解回調函數理解與使用中的回調函數這篇相當不錯回調函數 為什么寫回調函數 對于javascript中回調函數 一直處于理解,但是應用不好的階段,總是在別人家的代碼中看到很巧妙的回調,那時候會有wow c...
摘要:的翻譯文檔由的維護很多人說,阮老師已經有一本關于的書了入門,覺得看看這本書就足夠了。前端的異步解決方案之和異步編程模式在前端開發過程中,顯得越來越重要。為了讓編程更美好,我們就需要引入來降低異步編程的復雜性。 JavaScript Promise 迷你書(中文版) 超詳細介紹promise的gitbook,看完再不會promise...... 本書的目的是以目前還在制定中的ECMASc...
摘要:例如處理請求的線程處理事件的線程定時器線程讀寫文件的線程例如在中等等。事件循環事件循環是指主線程重復從消息隊列中取消息執行的過程。事件觸發時,表示異步任務完成,會將事件監聽器函數封裝成一條消息放到消息隊列中,等待主線程執行。 一. 單線程 我們常說JavaScript是單線程的。 所謂單線程,是指在JS引擎中負責解釋和執行JavaScript代碼的線程只有一個。不妨叫它主線程。 但是實...
摘要:瀏覽器是多進程的詳情看我上篇總結瀏覽器執行機制的文章深入前端徹底搞懂瀏覽器運行機制瀏覽器每打開一個標簽頁,就相當于創建了一個獨立的瀏覽器進程。執行異步操作事件完成,回調函數進入。主線程從讀取回調函數并執行。 最近看了很多關于JS運行機制的文章,每篇都獲益匪淺,但各有不同,所以在這里對這幾篇文章里說的很精辟的地方做一個總結,參考文章鏈接見最后。本文博客地址 了解進程和線程 進程是應用...
摘要:瀏覽器是多進程的詳情看我上篇總結瀏覽器執行機制的文章深入前端徹底搞懂瀏覽器運行機制瀏覽器每打開一個標簽頁,就相當于創建了一個獨立的瀏覽器進程。執行異步操作事件完成,回調函數進入。主線程從讀取回調函數并執行。 最近看了很多關于JS運行機制的文章,每篇都獲益匪淺,但各有不同,所以在這里對這幾篇文章里說的很精辟的地方做一個總結,參考文章鏈接見最后。本文博客地址 了解進程和線程 進程是應用...
閱讀 3094·2021-09-22 15:54
閱讀 3981·2021-09-09 11:34
閱讀 1767·2019-08-30 12:48
閱讀 1161·2019-08-30 11:18
閱讀 3431·2019-08-26 11:48
閱讀 913·2019-08-23 17:50
閱讀 2119·2019-08-23 17:17
閱讀 1240·2019-08-23 17:12