1. 程式人生 > >回調函數和鉤子函數的區別

回調函數和鉤子函數的區別

特殊性 監聽 define 因此 調用 消息 ntb 特殊 listener

在消息處理機制中必不可少的一組CP,即回調和鉤子。

鉤子的概念源於Windows的消息處理機制,通過設置鉤子,應用程序可以對所有的消息事件進行攔截,然後執行鉤子函數,對消息進行想要的處理方式。

接下來是一段js代碼,主要用於給btn設置點擊的鉤子函數。

let btn = document.getElementById("btn");
btn.onclick = () => {
console.log("i‘m a hook");
}
鉤子是在捕獲消息的時候立即執行鉤子函數。

下面是一段給btn添加click的監聽器。

btn.addEventListener("click",() =>{
console.log(this.onclick);//undefined
});

這是給btn綁定了一個監聽器,後面那個函數是它的回調函數,因為消息捕獲的過程我們並不能參與,而在捕獲執行完畢的時候,回調函數才會執行,我們可以把對消息的處理寫在回調函數裏。

js由於自身的特殊性(單線程),因而在代碼裏充滿各式各樣的異步操作,因此回調函數也是鋪天蓋地,上面的兩段代碼都是異步的。

回調函數和鉤子函數的區別
根本上,他們都是為了捕獲消息而生的,但是鉤子函數在捕獲消息的第一時間就會執行,而回調函數是在整個捕獲過程結束時,最後一個被執行的。

回調函數其實就是調用者把回調函數的函數指針傳遞給調用函數,當調用函數執行完畢時,通過函數指針來調用回調函數

回調函數和鉤子函數的區別