JS中鉤子函數(shù)與回調(diào)函數(shù)的區(qū)別

2019-10-16    seo達(dá)人

測(cè)試代碼

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <title>Title</title>

</head>

<body>

    <button id="btn">按鈕</button>

    <script>

        let btn = document.getElementById("btn");

        btn.onclick = () => { // 鉤子函數(shù)

            console.log('我是鉤子函數(shù)');

        }

 

        btn.addEventListener("click",() =>{ // 回調(diào)函數(shù)

            console.log('我是回調(diào)函數(shù)');

        });

        // 這是給btn綁定了一個(gè)監(jiān)聽(tīng)器,后面那個(gè)函數(shù)是它的回調(diào)函數(shù),

        // 因?yàn)橄⒉东@的過(guò)程我們并不能參與,而在捕獲執(zhí)行完畢的時(shí)候,

        // 回調(diào)函數(shù)才會(huì)執(zhí)行,我們可以把對(duì)消息的處理寫(xiě)在回調(diào)函數(shù)里。

    </script>

</body>

</html>

點(diǎn)擊按鈕后代碼輸出如下:







回調(diào)函數(shù)和鉤子函數(shù)的區(qū)別根本上是

鉤子函數(shù)在捕獲消息的第一時(shí)間就執(zhí)行,而回調(diào)函數(shù)是捕獲結(jié)束時(shí),最后一個(gè)被執(zhí)行的。



什么是鉤子函數(shù)

一般認(rèn)為,鉤子函數(shù)就是回調(diào)函數(shù)的一種,其實(shí)還是有差異的,差異地方就是:觸發(fā)的時(shí)機(jī)不同。

鉤子(Hook)概念源于Windows的消息處理機(jī)制,通過(guò)設(shè)置鉤子,應(yīng)用程序?qū)λ邢⑹录M(jìn)行攔截,然后執(zhí)行鉤子函數(shù)。 



什么是回調(diào)函數(shù)

回調(diào)函數(shù)其實(shí)是調(diào)用者將回調(diào)函數(shù)的指針傳遞給了調(diào)用函數(shù),當(dāng)調(diào)用函數(shù)執(zhí)行完畢后,通過(guò)函數(shù)指針來(lái)調(diào)用回調(diào)函數(shù)。



鉤子函數(shù)和回調(diào)函數(shù)都是事件處理函數(shù)


藍(lán)藍(lán)設(shè)計(jì)m.820esy.cn )是一家專(zhuān)注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì)  cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶(hù)體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)

分享本文至:

日歷

鏈接

個(gè)人資料

存檔