1.什么是回調函數?
-- 簡單點說,一個函數被作為參數傳遞給另一個函數(在這里我們把另一個函數叫做“otherFunction”),回調函數在otherFunction中被調用。
--可以是匿名函數也可以是命名函數
2.回調函數的特點
(1)自己定義的函數
(2)你沒有調用
(3)最終它執行了
3.常見的回調函數
(1)DOM事件回調函數

(2)定時器回調函數

(3)ajax請求回調函數
略。(后續相應內容補充)
(4)生命周期回調函數
略。(后續相應內容補充)
4.拓展
--代碼分類
(1)初始化代碼:一般的代碼,包括設置定時器,綁定監聽,發送ajax請求……
(2)回調代碼:回調函數的代碼
JavaScript引擎,在執行代碼時,先執行初始化代碼,等到初始化代碼全部執行結束時,再執行回調代碼。

執行結果:

重上述案例中,我們可以 看到回調函數不管在整個代碼的什么位置,它都要比初始化代碼執行完后才會執行。
上述代碼執行流程:前兩代碼打開了定時器,此時JavaScript引擎將回調函數,和設置的時間交給定時器管理模塊(事件管理模塊),待到事件觸發時,回調函數加入到回調隊列中(callback queue),此時處於待處理狀態。如果初始化代碼全部執行結束,才會循環遍歷回調隊列中的回調函數。在上述代碼中先加入隊列的是延時時間為0ms的定時器,然后才是2000ms的定時器,由於隊列的特性是先進先出,所以兩個定時器間,先執行第二個定時器,在執行第一個定時器。
(此處涉及到時間循環模型,后續內容會補充,這里我們只需要大致了解回調函數是什么時候執行的)
