如何深度理解JavaScript的回撥函式
阿新 • • 發佈:2022-05-23
首先,回撥函式這個概念,他是JS
中的一個核心。
作為JS
的核心,回撥函式和非同步執行是緊密相關的,也是必須跨過去的一道個門檻。
當然,我們這篇文字只談回撥,不說非同步。
物件?
JavaScript有物件嘛?
我們知道,JavaScript他不是一個面嚮物件語言,但是,我們的JavaScript是一個基於物件的指令碼語言。
啥意思,也就是基本上,JavaScript裡面的函式啊,變數啊,這些都是一個物件,當然這個概念不是像面嚮物件語言那樣。
回撥?
看這張圖,是一個簡單的回撥函式,怎麼回調了呢?
在一個函式裡面,我們將另一個函式作為引數,並在函式體內部呼叫它。在 JavaScript 裡,我們叫它 “回撥”
為什麼需要回調函式?
我們知道,JavaScript是一個典型的解釋型的指令碼語言,他在執行時,是一行一行執行的。
但是,我們有時候,必須在某些情況發生之後,程式碼才能執行(或者說必須執行),這就不是按順序運行了。
但是我們上面說了,JavaScript他是一個逐行執行的語言,那咋還能不按順序來呢?
這是是我們所說的非同步程式設計,即沒有按照原本順序來逐行執行。
回撥函式確保:函式在某個任務完成之前不執行,在任務完成之後立即執行。它幫助我們編寫非同步 JavaScript 程式碼,避免問題和錯誤。
說白了就是,將函式當作物件傳入另一個函式裡面執行,而且可以多層巢狀。
到了接觸Node.js
或者ajax
非同步時,自然就明白其概念了。
\