Function
函式是一段可以被其他程式碼或自身呼叫的程式碼片段,或者是一個引用函式的變數。當函式被呼叫時,引數作為輸入傳遞給函式,函式可以選擇性地返回一個值。JavaScript 中的函式也是一個物件。
不同型別的函式
匿名函式是沒有函式名的函式。只有函式表示式可以是匿名的,函式宣告必須有名字。
js
// Anonymous function created as a function expression
(function () {});
// Anonymous function created as an arrow function
() => {};
以下術語並未在 ECMAScript 語言規範中使用,它們是用來指代不同型別函式的行話。
命名函式是帶有函式名的函式。
js
// Function declaration
function foo() {}
// Named function expression
(function bar() {});
// Arrow function
const baz = () => {};
內部函式是另一個函式內部的函式(本例中為 square)。外部函式是包含函式的函式(本例中為 addSquares)。
js
function addSquares(a, b) {
function square(x) {
return x * x;
}
return square(a) + square(b);
}
// Arrow function
const addSquares2 = (a, b) => {
const square = (x) => x * x;
return square(a) + square(b);
};
遞迴函式是呼叫自身的函式。參見遞迴。
js
function loop(x) {
if (x >= 10) return;
loop(x + 1);
}
// Arrow function
const loop2 = (x) => {
if (x >= 10) return;
loop2(x + 1);
};
立即呼叫函式表示式 (IIFE) 是一個在函式載入到瀏覽器編譯器後立即被呼叫的函式。識別 IIFE 的方法是找到函式定義末尾額外的左右括號。
函式表示式,無論命名與否,都可以立即呼叫。
js
(function foo() {
console.log("Hello Foo");
})();
(function food() {
console.log("Hello Food");
})();
(() => console.log("hello world"))();
宣告的函式不能以這種方式立即呼叫,因為 IIFE 必須是函式表示式。
js
function foo() {
console.log("Hello Foo");
}();
如果您想了解更多關於 IIFE 的資訊,請檢視維基百科上的以下頁面:立即呼叫函式表示式