關於JavaScript中的回調函數的個人見解,歡迎糾錯

編程語言 JavaScript Node.js 維基百科 又帥又愛笑 2017-05-20

昨天一發了一篇關於JavaScript的順序執行機制的文章,裡面有些爭論,但最後似乎趨於緩和。評論裡一條友叫我聊聊JavaScript的回調函數。

當時想了想最近在接觸Nodejs,裡面幾乎全是回調函數。就爽快的答應了。今天打開電腦準備動工的時候覺得回調函數不就是:一個函數執行完成相應的處理之後調用立即執行與之對應的其他函數麼?

這也太簡單了吧....好像不太對,就百度百科了一下。

關於JavaScript中的回調函數的個人見解,歡迎糾錯

百度百科對回調函數的解釋

咋牽扯到函數指針了....頓時一臉懵逼(初學C語言的時候指針真是讓人頭痛)。然後為維基百科查了下:

關於JavaScript中的回調函數的個人見解,歡迎糾錯

維基百科的解釋

似乎還是google好用,畢竟我和想的比較接近。

最後網上查閱了一些相關的資料,關於回調函數的講解真的很少。唯一一個比較令我我有些收穫的就是腳本之家的解釋(小編不能發鏈接,百度就可以看見)。

下面引用了它的一段代碼:

關於JavaScript中的回調函數的個人見解,歡迎糾錯

代碼

首先得知道JavaScript中函數參數是可以傳遞對象的,比如數組,String,Data...等。上面的fn函數的最後一個參數callback就可以看成一個函數對象,作為參數傳遞到了fn裡面並且在裡面執行。當執行調用fn函數的時候callback就相當於被傳遞進去的匿名函數。我們也可以這樣看:

關於JavaScript中的回調函數的個人見解,歡迎糾錯

代碼

這時候callback就相當於call函數了。小編以前認為回調函數是函數執行完成之後再調用的一個函數。但我想這是一種膚淺的認知。

關於JavaScript中的回調函數的個人見解,歡迎糾錯

代碼

按照以前的認識,如果說的回調函數是指一個函數調用完成之後再調用其他函數的話輸出結果應該不是順序執行的。輸出順序應該是:1-2-15這樣的順序。但卻不是這樣輸出的。所以以前小編的認識不太準確。但是似乎很多見到的會多例子都可以拿一個函數執行完了再執行另一個函數來解釋。比如Jq裡面的hide函數和fadeIn、fadeOut等:

關於JavaScript中的回調函數的個人見解,歡迎糾錯

jq裡面的隱藏回調

nodejs裡面的讀取函數:

關於JavaScript中的回調函數的個人見解,歡迎糾錯

代碼

總結一下,小編認為所謂回調函數就是指把一個函數作為另一個函數的參數傳遞到該函數之中,然後參數函數可以通過傳遞參數的形式引用主函數的某些變量和方法處理相應的事務。這可以看出回調函數和JavaScript中的閉包我想是分不開的。

以上只是小編個人見解,歡迎評論,糾正錯誤(謝謝關注)。

相關推薦

推薦中...