一等函式
當一門程式語言中的函式像其他變數一樣被對待時,我們說這門語言擁有一等函式。例如,在這種語言中,函式可以作為引數傳遞給其他函式,可以由另一個函式返回,也可以被賦值給一個變數。
示例
將函式賦值給變數
js
const foo = () => {
console.log("foobar");
};
foo(); // Invoke it using the variable
// foobar
我們將一個匿名函式賦值給了一個變數,然後我們透過在變數名後新增圓括號 () 來使用該變數呼叫該函式。
注意:即使你的函式有名,你仍然可以使用變數名來呼叫它。命名它有助於在除錯程式碼時。但這不會影響我們呼叫它的方式。
將函式作為引數傳遞
js
function sayHello() {
return "Hello, ";
}
function greeting(helloMessage, name) {
console.log(helloMessage() + name);
}
// Pass `sayHello` as an argument to `greeting` function
greeting(sayHello, "JavaScript!");
// Hello, JavaScript!
我們將 sayHello() 函式作為引數傳遞給 greeting() 函式,這說明了我們將函式視為一個值。
注意:我們作為引數傳遞給另一個函式的函式稱為回撥函式。sayHello() 是一個回撥函式。
返回一個函式
js
function sayHello() {
return () => {
console.log("Hello!");
};
}
在這個例子中,我們從一個函式中返回了另一個函式 - 我們可以返回一個函式,因為 JavaScript 中的函式被視為值。
注意:返回函式或接受其他函式作為引數的函式稱為高階函式。