在 JavaScript 中,回調函數被視為編寫高級異步代碼的關鍵部分。回調函數是一個函數,作為另一個函數的參數而傳遞,并在其他函數完成之后執行。這種函數將在特定事件之后被調用。回調函數可被定義為函數表達式或函數聲明形式。下面將介紹如何定義回調函數。
以下是一個基本示例:
function greeting(name) { alert('Hello ' + name); } function processUserInput(callback) { var name = prompt('Please enter your name.'); callback(name); } processUserInput(greeting);
在上面的代碼中,我們定義了一個processUserInput()函數,在其中請求用戶輸入一個名稱,然后將名稱傳遞給回調函數來處理。另一個greeting()函數簡單地向用戶發送一個招呼消息。
當我們調用processUserInput()函數時,我們將greeting()函數作為參數傳入,因此它將在processUserInput()函數完成后被調用。我們通過調用callback(name)來調用回調函數,并傳入用戶提供的名稱。
回調函數可以返回值以進行其他操作。例如,我們可以在回調函數內部將用戶名稱存儲到數據庫中。在下面的示例中,回調函數返回一個值,其中包含向用戶發送的消息:
function sendMessage(message, callback) { console.log('Message sent: ' + message); callback(); } sendMessage('Hello World!', function() { console.log('Message delivered.'); });
在這個例子中,sendMessage()函數需要一個消息和一個回調函數來發送和確認消息發送。在回調函數中,我們簡單地記錄消息已被發送,然后通過調用callback()函數來標記消息已經成功交付。
除了函數聲明外,回調函數還可以作為匿名函數或函數表達式定義。這是一個使用函數表達式的例子:
var performTask = function(callback) { // ... 執行任務 console.log('Task complete.'); callback(); }; performTask(function() { console.log('Callback executed.'); });
在這個例子中,我們定義了一個名為performTask的函數,并將其作為一個變量定義。這個函數接受一個回調函數作為參數,然后在完成其所需的操作后調用回調函數。
總而言之,回調函數是 JavaScript 中非常有用的概念之一。通過正確定義回調函數,您可以編寫優雅的異步代碼,提高代碼的可讀性和可維護性。