技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營

贊助商

分類目錄

贊助商

最新文章

搜索

什么是JavaScript回調(diào)函數(shù)以及如何使用它們

作者:admin    時(shí)間:2022-6-27 11:22:54    瀏覽:

在這篇文章中,我將通過一些例子來幫助你理解什么是 JavaScript 回調(diào)函數(shù)以及如何使用它們。你還可以參考以下一文,學(xué)習(xí)和使用JavaScript回調(diào)函數(shù)。

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

在 JavaScript 中,函數(shù)是對象。我們可以將對象作為參數(shù)傳遞給函數(shù)嗎?是的。

因此,我們也可以將函數(shù)作為參數(shù)傳遞給其他函數(shù),并在外部函數(shù)內(nèi)部調(diào)用它們。聽起來很復(fù)雜?讓我在下面的示例中展示這一點(diǎn):

function print(callback) {  
    callback();
}

print() 函數(shù)將另一個函數(shù)作為參數(shù)并在內(nèi)部調(diào)用它。這在 JavaScript 中是有效的,我們稱之為“回調(diào)”。所以作為參數(shù)傳遞給另一個函數(shù)的函數(shù)是回調(diào)函數(shù)。

為什么我們需要回調(diào)函數(shù)?

JavaScript 按自上而下的順序依次運(yùn)行代碼。但是,在某些情況下,代碼在其他事情發(fā)生之后運(yùn)行(或必須運(yùn)行),而且不是按順序運(yùn)行的。這稱為異步編程。

回調(diào)確保函數(shù)不會在任務(wù)完成之前運(yùn)行,而是在任務(wù)完成后立即運(yùn)行。它幫助我們開發(fā)異步 JavaScript 代碼,并讓我們遠(yuǎn)離問題和錯誤。

在 JavaScript 中,創(chuàng)建回調(diào)函數(shù)的方法是將其作為參數(shù)傳遞給另一個函數(shù),然后在某事發(fā)生或某項(xiàng)任務(wù)完成后立即回調(diào)。

如何創(chuàng)建回調(diào)

為了理解我上面解釋的內(nèi)容,讓我從一個簡單的例子開始。我們想將一條消息記錄到控制臺,但它應(yīng)該在 3 秒后出現(xiàn)。

const message = function() {  
    console.log("這條消息在3秒后顯示");
}
 
setTimeout(message, 3000);

JavaScript 中有一個名為setTimeout的內(nèi)置方法,它在給定時(shí)間段(以毫秒為單位)后調(diào)用函數(shù)或計(jì)算表達(dá)式。所以在這里,message函數(shù)在 3 秒后被調(diào)用。(1 秒 = 1000 毫秒)

換句話說,message函數(shù)是在某事發(fā)生后調(diào)用的(對于這個例子來說是在 3 秒之后),而不是之前。所以message函數(shù)是回調(diào)函數(shù)的一個例子。

匿名函數(shù)

我們可以直接在另一個函數(shù)內(nèi)部定義一個函數(shù),而不是調(diào)用它。它看起來像這樣:

setTimeout(function() {  
    console.log("這條消息在3秒后顯示");
}, 3000);

我們可以看到,這里的回調(diào)函數(shù)沒有名字,在 JavaScript 中沒有名字的函數(shù)定義被稱為“匿名函數(shù)”。這與上面的示例執(zhí)行完全相同的任務(wù)。

作為箭頭函數(shù)的回調(diào)

如果你愿意,也可以編寫與 ES6 箭頭函數(shù)相同的回調(diào)函數(shù),這是 JavaScript 中一種較新的函數(shù)類型:

setTimeout(() => { 
    console.log("這條消息在3秒后顯示");
}, 3000);

事件

JavaScript 是一種事件驅(qū)動的編程語言。我們還使用回調(diào)函數(shù)進(jìn)行事件聲明。例如,假設(shè)我們希望用戶點(diǎn)擊一個按鈕:

<button id="callback-btn">Click here</button>

這次我們只會在用戶單擊按鈕時(shí)在控制臺上看到一條消息:

document.queryselector("#callback-btn")
    .addEventListener("click", function() {    
      console.log("用戶已經(jīng)點(diǎn)擊了按鈕");
});

所以這里我們先用它的 id 選擇按鈕,然后我們用 addEventListener 方法添加一個事件監(jiān)聽器。它需要2個參數(shù)。第一個是它的類型,“click”,第二個參數(shù)是一個回調(diào)函數(shù),它記錄單擊按鈕時(shí)的消息。

上例顯示,回調(diào)函數(shù)也用于 JavaScript 中的事件聲明。

總結(jié)

回調(diào)在 JavaScript 中經(jīng)常使用,希望這篇文章能幫助你了解它們的實(shí)際作用以及如何更輕松地使用它們。

相關(guān)文章

標(biāo)簽: 回調(diào)函數(shù)  callback  
x
  • 站長推薦
/* 左側(cè)顯示文章內(nèi)容目錄 */