函式
在 JavaScript 中,函式是一個執行特定任務或計算值的代碼區塊。函式的靈活性和強大功能使它成為 JavaScript 中非常重要的一部分。以下是有關 JavaScript 函式的詳細語法說明。
1. 函式的基本宣告
使用 function 關鍵字來宣告函式,並給它一個名稱。
2. 函式參數與回傳值
- 參數:函式可以接受零個或多個參數,這些參數在函式內部用來處理數據。
- 回傳值:使用
return關鍵字返回一個值。一旦執行到return,函式會停止運行並返回該值。 範例:
3. 匿名函式
匿名函式(Anonymous Function)是沒有名稱的函式,通常用於一次性的執行或作為其他函式的參數。
4. 箭頭函式(Arrow Function)
箭頭函式是 ES6 引入的一種更簡潔的函式語法,特別適用於簡短的函式。
範例: 如果箭頭函式只有一個參數和一行返回語句,可以省略括號和return 關鍵字:
5. 函式表達式
函式可以作為一個表達式來使用,並賦值給變數。這種方式可以用於創建匿名函式。
6. 立即執行函式表達式(IIFE)
立即執行函式表達式(Immediately Invoked Function Expression, IIFE)是一種特殊的匿名函式,會立即執行。通常用於避免污染全局作用域。
7. 高階函式(Higher-Order Function)
高階函式是可以接受函式作為參數,或返回一個函式的函式。這種函式在 JavaScript 中非常強大,常用於回調(callback)和函式組合。
範例:
function performOperation(a, b, operation) {
return operation(a, b);
}
function add(x, y) {
return x + y;
}
function multiply(x, y) {
return x * y;
}
console.log(performOperation(3, 4, add)); // 7
console.log(performOperation(3, 4, multiply)); // 12
8. 函式的默認參數
ES6 引入了默認參數功能,允許在函式定義時為參數指定默認值。如果函式調用時未傳遞該參數,則使用默認值。
function greet(name = "Guest") {
return "Hello, " + name;
}
console.log(greet()); // "Hello, Guest"
console.log(greet("Alice")); // "Hello, Alice"
9. Rest 參數
Rest 參數(...)允許函式接受不定數量的參數,並將它們作為一個陣列提供給函式。
function sum(...numbers) {
return numbers.reduce((total, num) => total + num, 0);
}
console.log(sum(1, 2, 3, 4)); // 10
10. 函式的作用域(Scope)與閉包(Closure)
- 作用域:函式內部變數的可見性和存取範圍。JavaScript 中有全域作用域和區域(函式)作用域。
- 閉包:當函式內部的函式(內嵌函式)引用了外部函式的變數時,形成閉包。
範例:
function outerFunction(outerVariable) {
return function innerFunction(innerVariable) {
console.log("Outer Variable: " + outerVariable);
console.log("Inner Variable: " + innerVariable);
};
}
const newFunction = outerFunction("outside");
newFunction("inside");
// Outer Variable: outside
// Inner Variable: inside
11. 箭頭函式與 this 關鍵字
箭頭函式不綁定自己的 this,它會捕捉到定義它的上下文中的 this 值,這對於處理 this 在回調函式中的行為非常有用。
範例:
function Timer() {
this.seconds = 0;
setInterval(() => {
this.seconds++;
console.log(this.seconds);
}, 1000);
}
let timer = new Timer();
// 每秒鐘輸出一次秒數
12. 生成器函式
生成器函式是 ES6 引入的一種特殊函式,使用 function* 定義。生成器函式可以在執行過程中暫停和繼續。
function* generatorFunction() {
yield 1;
yield 2;
yield 3;
}
const generator = generatorFunction();
console.log(generator.next().value); // 1
console.log(generator.next().value); // 2
console.log(generator.next().value); // 3
13. 遞歸函式
遞歸函式是指函式自己調用自己,通常用於處理像樹結構、數學計算(如費氏數列、階乘)等問題。
範例:
function factorial(n) {
if (n === 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
console.log(factorial(5)); // 120
這些是 JavaScript 中函式相關的主要語法和概念。理解這些內容將有助於你有效地編寫和理解 JavaScript 程式碼。