javascript以函數作為參數的回呼函實例用法詳解
express是以函數作為參數的回呼函數的使用。如果這個概念理解不了,nodejs、express 的程式碼就會看得一塌糊塗。例如:
app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); });
app是對象,use是方法,方法的參數是一個帶參的匿名函數,函數體就直接在後面給了。這段程式碼怎麼理解呢?我們先來了解回呼函數這個概念。
首先要了解,在 js 中,函數也是對象,可以賦值給變量,可以作為參數放在函數的參數列表中。例如:
var doSomething = function(a,b) { return a + b; }
這段程式碼的意思是定義一個匿名函數,這個匿名函數除了沒有名字之外,其他跟普通的函數沒有什麼兩樣。然後把匿名函數賦值給變數doSomething。接下來我們呼叫:
console.log(doSomething(2,3));
這樣會輸出5。
回呼函數,就是放在另一個函數(如 parent)的參數清單中,作為參數傳遞給這個 parent,然後在 parent 函數體的某個位置執行。說來抽象,看例子:
// To illustrate the concept of callback var doit = function(callback) { var a = 1, b = 2, c = 3; var t = callback(a,b,c); return t + 10; }; var d = doit(function(x,y,z){ return (x+y+z); }); console.log(d);
先定義 doit 函數,有一個參數 callback。這個 callback 就是回呼函數,名字可以任意取用。看函數體,先定義三個變數 a,b,c。然後呼叫 callback 函數。最後傳回一個值。
下面就呼叫 doit 函數了。要注意的是,剛才定義 doit 時,callback 並沒有定義,所以剛才並不知道 callback 是做什麼用的。這其實很好理解,我們平時定義函數的時候,參數也只是給了一個名字,比如a,在函數體中使用a,但整個過程也並不知道a 到底是什麼,只有在調用那個函數的時候才指定a 的具體值,例如2.回過頭來,在呼叫doit 的時候,我們就需要指定callback 究竟是個什麼東西了。可以看到,這個函數完成了一個 sum 函數。
上述程式碼的執行過程是:
呼叫doit函數,參數是一個匿名函數;進入doit 的函數體中,先定義a,b,c,然後執行剛才的匿名函數,參數是a,b,c,並回傳一個t,最後回傳一個t+10給d。
回到最初的例子,app.use(...)是函數呼叫。我們可以想像,之前一定定義了一個 use 方法,只是這裡沒有給。這兩個例子一對比,就可以馬上理解了。
在使用nodejs、express 的時候,不可能每個方法或函數我們都要找到它的函數定義去看一看。所以只要知道那個定義裡面傳遞了什麼參數給 callback 就行了。然後在呼叫方法或函數時,在參數裡我們自己定義匿名函數來完成某些功能。
以上是javascript以函數作為參數的回呼函實例用法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

人臉偵測辨識技術已經是一個比較成熟且應用廣泛的技術。而目前最廣泛的網路應用語言非JS莫屬,在Web前端實現人臉偵測辨識相比後端的人臉辨識有優勢也有弱勢。優點包括減少網路互動、即時識別,大大縮短了使用者等待時間,提高了使用者體驗;弱勢是:受到模型大小限制,其中準確率也有限。如何在web端使用js實現人臉偵測呢?為了實現Web端人臉識別,需要熟悉相關的程式語言和技術,如JavaScript、HTML、CSS、WebRTC等。同時也需要掌握相關的電腦視覺和人工智慧技術。值得注意的是,由於Web端的計

股票分析必備工具:學習PHP和JS繪製蠟燭圖的步驟,需要具體程式碼範例隨著網路和科技的快速發展,股票交易已成為許多投資者的重要途徑之一。而股票分析是投資人決策的重要一環,其中蠟燭圖被廣泛應用於技術分析。學習如何使用PHP和JS繪製蠟燭圖將為投資者提供更多直觀的信息,幫助他們更好地做出決策。蠟燭圖是一種以蠟燭形狀來展示股票價格的技術圖表。它展示了股票價格的

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

隨著網路金融的快速發展,股票投資已經成為了越來越多人的選擇。而在股票交易中,蠟燭圖是常用的技術分析方法,它能夠顯示股票價格的變動趨勢,幫助投資人做出更精準的決策。本文將透過介紹PHP和JS的開發技巧,帶領讀者了解如何繪製股票蠟燭圖,並提供具體的程式碼範例。一、了解股票蠟燭圖在介紹如何繪製股票蠟燭圖之前,我們首先需要先了解什麼是蠟燭圖。蠟燭圖是由日本人

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

js和vue的關係:1、JS作為Web開發基石;2、Vue.js作為前端框架的崛起;3、JS與Vue的互補關係;4、JS與Vue的實踐應用。

Golang是一門功能強大且高效的程式語言,可用於開發各種應用程式和服務。在Golang中,指標是一種非常重要的概念,它可以幫助我們更靈活和有效率地操作資料。指標轉換是指在不同類型之間進行指標操作的過程,本文將透過具體的實例來學習Golang中指標轉換的最佳實踐。 1.基本概念在Golang中,每個變數都有一個位址,位址就是變數在記憶體中的位置。

JavaScript中的HTTP狀態碼取得方法簡介:在進行前端開發中,我們常常需要處理與後端介面的交互,而HTTP狀態碼就是其中非常重要的一部分。了解並取得HTTP狀態碼有助於我們更好地處理介面傳回的資料。本文將介紹使用JavaScript取得HTTP狀態碼的方法,並提供具體程式碼範例。一、什麼是HTTP狀態碼HTTP狀態碼是指當瀏覽器向伺服器發起請求時,服務
