3.1 宣告函數
函數是 JavaScript 中的主要建構塊之一。它們讓你可以組織代碼、重複使用邏輯並創建更複雜的結構。讓我們來看看三種主要的函數宣告與使用方式:函數宣告、函數表達式和箭頭函數。
函數宣告 是創建具名函數的一種方法,可以在稍後調用。這些函數會被提升(hoisted)到所在作用域的頂端,這意味著你可以在代碼中宣告之前就調用它們。
語法:
function name (arguments) {
// function body
}
用法示例:
JavaScript
// 宣告函數
function greet(name) {
return `Hello, ${name}!`;
}
// 調用函數
console.log(greet('Alice')); // 輸出: Hello, Alice!
3.2 函數表達式
函數表達式創建的匿名函數(無名稱函數)可以被賦值給變量。這類函數不會被提升,所以只能在宣告後調用。
語法:
const name = function (arguments) {
// function body
}
用法示例:
JavaScript
// 函數表達式
const greet = function(name) {
return `Hello, ${name}!`;
};
// 調用函數
console.log(greet('Bob')); // 輸出: Hello, Bob!
3.3 箭頭函數
箭頭函數 (arrow functions) 是一種簡潔的函數宣告方法,同時保存了父作用域的this
上下文。箭頭函數沒有自己的this
,所以在事件處理程式和陣列方法中特別有用。
語法:
const name = (arguments) => {
// function body
}
如果函數只接受一個參數,可以省略圓括號。如果函數返回一個表達式,可以省略大括號和return
關鍵字。
示例 1: 完整寫法
JavaScript
// 箭頭函數
const greet = (name) => {
return `Hello, ${name}!`;
};
// 調用函數
console.log(greet('Charlie')); // 輸出: Hello, Charlie!
示例 2: 簡寫方式
JavaScript
// 單參數單表示式的箭頭函數
const greet = name => `Hello, ${name}!`;
// 調用函數
console.log(greet('Dana')); // 輸出: Hello, Dana!
3.4 不同函數宣告方法的比較
提升 (hoisting):
- 函數宣告: 函數會被提升,可以在宣告前調用
- 函數表達式 和 箭頭函數: 不會被提升,只能在宣告後調用
this 上下文:
- 函數宣告 和 函數表達式: 有自己的 this 上下文
- 箭頭函數: 沒有自己的 this,上下文繼承自父作用域
撰寫便利性:
- 箭頭函數: 更為簡潔,常用於短小的函數和回調
GO TO FULL VERSION