JS學習筆記#15 | 箭頭函式(Arrow Function)

更新 發佈閱讀 6 分鐘

箭頭函式

箭頭函式是 JavaScript ES6(ECMAScript 2015)引入的一種簡化 Function Expression 語法。

它用來快速定義匿名函式,語法簡潔,特性明確,特別適合用於回呼函式等場景。


箭頭函式的語法

1. 基本語法

const 函式名稱 = (參數1, 參數2, ...) => {
// 函式內容
return 結果;
};

2. 簡化寫法

  • 當函式只有一行 return 時,可省略大括號 {} 和 return 關鍵字。
const add = (a, b) => a + b;
  • 當只有一個參數時,可省略括號 ()。
const square = x => x * x;
  • 當沒有參數時,必須使用空括號 ()。
const greet = () => 'Hello, world!';

箭頭函式的特性

1. 不建立自己的 this

    • 箭頭函式的 this 是靜態的,繼承自定義它的外部作用域。
    • 不會因為呼叫方式而改變。
const obj = {
name: 'Amy',
// 傳統函式
regularFunction: function () {
console.log(this.name); // this 指向 obj
},
// 箭頭函式
arrowFunction: () => {
console.log(this.name); // this 指向外部作用域,可能是全域物件(undefined)
},
greet: function() {
console.log('Hello, my name is ' + this.name);
// 傳統函式
function innerFunction() {
console.log('Inside innerFunction, this.name is:', this.name);
}
innerFunction();
// 箭頭函式
const innerArrowFunction = () => {
console.log('Inside arrowFunction, this.name is:', this.name);
};
innerArrowFunction();
}
};

obj.regularFunction(); //輸出:Amy
obj.arrowFunction(); // 輸出:undefined
obj.greet();
// 輸出:"Hello, my name is Amy"
// "Inside innerFunction, this.name is:" "undefined"
// "Inside arrowFunction, this.name is:" "Amy"

2. 沒有 arguments 物件

箭頭函式無法使用 arguments,需要用展開運算符 ...args 替代。

const regularFunction = function () {
console.log(arguments); // 可使用 arguments
};

const arrowFunction = (...args) => {
console.log(args); // 使用展開運算符代替 arguments
};

regularFunction(1, 2, 3); // 輸出:[1, 2, 3]
arrowFunction(1, 2, 3); // 輸出:[1, 2, 3]

3. 不能作為建構函式(constructor)

箭頭函式無法使用 new 關鍵字。

const Arrow = () => {};
new Arrow(); // TypeError: Arrow is not a constructor

使用場景與適用性

1. 回呼函式:避免因 this 指向錯誤而出現問題。

setTimeout(() => {
console.log('This is a callback function!');
}, 1000);

2. 陣列方法:簡化邏輯。

const numbers = [1, 2, 3, 4];
const squares = numbers.map(n => n * n);
console.log(squares); // [1, 4, 9, 16]

3. 固定 this 的場合:例如類別中的回呼。

class Timer {
constructor() {
this.seconds = 0;
}

start() {
setInterval(() => {
this.seconds++;
console.log(this.seconds); // this 永遠指向 Timer 實例
}, 1000);
}
}

const timer = new Timer();
timer.start();



結論

  • 優點: 語法簡潔,適合短小的函式。 固定 this 指向,避免回呼函式中的常見錯誤。
  • 缺點: 無法動態設定 this。 無法使用 arguments。 無法作為建構函式。

箭頭函式適合用於簡化回呼邏輯與處理固定 this 的場景,但不適合需要更多動態特性的函式場景。


留言
avatar-img
koko的沙龍
1會員
34內容數
koko的沙龍的其他內容
2025/04/28
在 React 的世界裡,Props 負責從父元件向子元件傳遞資料,而 State 則是負責管理元件自身的內部資料。 State 就像元件的記憶,可以儲存元件的狀態,並根據狀態的變化來更新 UI。
Thumbnail
2025/04/28
在 React 的世界裡,Props 負責從父元件向子元件傳遞資料,而 State 則是負責管理元件自身的內部資料。 State 就像元件的記憶,可以儲存元件的狀態,並根據狀態的變化來更新 UI。
Thumbnail
2025/04/27
在 React 的世界裡,元件 (Component) 就像一個個獨立的個體,各自負責 UI 的一部分,要讓這些個體協同工作,就需要一種溝通的機制,而 Props 就是組件之間通信和數據傳遞的主要方式。
Thumbnail
2025/04/27
在 React 的世界裡,元件 (Component) 就像一個個獨立的個體,各自負責 UI 的一部分,要讓這些個體協同工作,就需要一種溝通的機制,而 Props 就是組件之間通信和數據傳遞的主要方式。
Thumbnail
2025/04/27
在 React 的世界裡,元件 (Component) 扮演著至關重要的角色。它們是構成使用者介面 (UI) 的基本 building blocks,如同積木一般,可以組合成複雜的應用程式。
Thumbnail
2025/04/27
在 React 的世界裡,元件 (Component) 扮演著至關重要的角色。它們是構成使用者介面 (UI) 的基本 building blocks,如同積木一般,可以組合成複雜的應用程式。
Thumbnail
看更多
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
本章將介紹 C 語言的函式 (Functions),這是將程式碼模組化、提高可讀性與重用性 的關鍵技術。透過函式,我們可以 拆分程式邏輯、減少重複代碼,本章亦透過實作讓讀者學習 參數傳遞、回傳值、遞迴等重要觀念。
Thumbnail
本章將介紹 C 語言的函式 (Functions),這是將程式碼模組化、提高可讀性與重用性 的關鍵技術。透過函式,我們可以 拆分程式邏輯、減少重複代碼,本章亦透過實作讓讀者學習 參數傳遞、回傳值、遞迴等重要觀念。
Thumbnail
箭頭函式是 JavaScript ES6(ECMAScript 2015)引入的一種簡化 Function Expression 語法。 它用來快速定義匿名函式,語法簡潔,特性明確,特別適合用於回呼函式等場景。
Thumbnail
箭頭函式是 JavaScript ES6(ECMAScript 2015)引入的一種簡化 Function Expression 語法。 它用來快速定義匿名函式,語法簡潔,特性明確,特別適合用於回呼函式等場景。
Thumbnail
Higher-Order Function(高階方程式) 是什麼 Higher-Order Function簡稱HOF,是指一個以function作為參數的function或者回傳function的function,我知道目前聽起來非常抽象,我們舉一個我們之前就已經看過的例子。 以Funct
Thumbnail
Higher-Order Function(高階方程式) 是什麼 Higher-Order Function簡稱HOF,是指一個以function作為參數的function或者回傳function的function,我知道目前聽起來非常抽象,我們舉一個我們之前就已經看過的例子。 以Funct
Thumbnail
在 JavaScript 中,邏輯運算子和比較運算子是用於條件判斷的重要工具。 它們常被用來進行邏輯運算和比較數值或變數,進一步決定程式的執行流程。
Thumbnail
在 JavaScript 中,邏輯運算子和比較運算子是用於條件判斷的重要工具。 它們常被用來進行邏輯運算和比較數值或變數,進一步決定程式的執行流程。
Thumbnail
2.0 上古漢語的特殊結構 2.3 之乎者也 —  也 (矣﹑焉) 2.3.1 也 一﹕初探之四 現在讓我們從函數引申出來的函子/論元觀點來解析上述「也」字的用法。用初級計算機科學編程的語言來說,函子就是一個具有函數功能的物件 (object),方便我們使用﹔它的功能就是讓我們可以召喚
Thumbnail
2.0 上古漢語的特殊結構 2.3 之乎者也 —  也 (矣﹑焉) 2.3.1 也 一﹕初探之四 現在讓我們從函數引申出來的函子/論元觀點來解析上述「也」字的用法。用初級計算機科學編程的語言來說,函子就是一個具有函數功能的物件 (object),方便我們使用﹔它的功能就是讓我們可以召喚
Thumbnail
1.0 從函數到函算語法 1.2 函數概念小史 1.2.1 中譯的來源 數學中函數概念的重要性難以盡書,亦很難想像沒有函數概念的數學可以走多遠。誇張一點,我們可以說很大部份的數學都是按函數概念操作的。但少有人留意到,在某個意義上,函數可說是數學語言的一個語構處理。 漢語「函數」一詞乃
Thumbnail
1.0 從函數到函算語法 1.2 函數概念小史 1.2.1 中譯的來源 數學中函數概念的重要性難以盡書,亦很難想像沒有函數概念的數學可以走多遠。誇張一點,我們可以說很大部份的數學都是按函數概念操作的。但少有人留意到,在某個意義上,函數可說是數學語言的一個語構處理。 漢語「函數」一詞乃
Thumbnail
這一篇會介紹非常重要的 JavaScript 函式概念 - 高階函式(Higher-order function),高階函數是將一個或多個函數作為參數,或將一個函數作為結果返回的函數。在本文中,我們將深入探討什麽是高階函數、使用高階函數的好處以及如何在實際應用中使用高階函數,函式導向是什麼?
Thumbnail
這一篇會介紹非常重要的 JavaScript 函式概念 - 高階函式(Higher-order function),高階函數是將一個或多個函數作為參數,或將一個函數作為結果返回的函數。在本文中,我們將深入探討什麽是高階函數、使用高階函數的好處以及如何在實際應用中使用高階函數,函式導向是什麼?
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News