JS學習筆記#14 | Function Declaration 與 Function Expression

更新於 發佈於 閱讀時間約 5 分鐘


Function Declaration(函式宣告)

定義:

  • 使用 function 關鍵字直接宣告函式。
  • 必須有函式名稱。
  • 可被提升(Hoisting),也就說可以在宣告前呼叫函式。

語法:

function 函式名稱(參數1, 參數2) {
// 函式內容
return 參數1 + 參數2;
}

範例:

// 可在宣告之前呼叫
console.log(add(2, 3)); // 輸出:5

function add(a, b) {
return a + b;
}

Function Expression(函式表達式)

定義:

  • 將函式作為一個值賦值給變數。
  • 不能被提升,必須在宣告後才能使用。
  • 可以是匿名函式或具名函式。

語法:

const 函式名稱 = function (參數1, 參數2) {
// 函式內容
return 參數1 + 參數2;
};

範例:

const add = function (a, b) {
return a + b;
};

// 必須在宣告後呼叫
console.log(add(2, 3)); // 輸出:5

兩者差異比較

raw-image

Function Expression 的主要用途

1. 作為回呼函式(Callback Function)

    • 將函式作為參數傳遞給其他函式。
    • 常用於陣列操作或事件處理。
const numbers = [1, 2, 3, 4];
numbers.forEach(function (num) {
console.log(num * 2);
});

2. 動態定義函式

根據條件動態分配不同的函式邏輯。

let operation;

if (true) {
operation = function (a, b) {
return a + b;
};
} else {
operation = function (a, b) {
return a - b;
};
}

console.log(operation(5, 3)); // 輸出:8

3. 立即執行函式(IIFE, Immediately Invoked Function Expression)

用於執行一次性邏輯,避免污染全域命名空間。

(function () {
const message = '這是一個立即執行函式';
console.log(message);
})();
// 輸出:這是一個立即執行函式

4. 用於模組化與閉包(Closure)

使用函式表達式實現閉包,保護變數的作用域。

const counter = (function () {
let count = 0;
return function () {
count += 1;
return count;
};
})();

console.log(counter()); // 輸出:1
console.log(counter()); // 輸出:2

5. 作為高階函式的返回值

高階函式返回另一個函式,讓邏輯更具彈性。

function createMultiplier(factor) {
return function (number) {
return number * factor;
};
}

const double = createMultiplier(2);
console.log(double(5)); // 輸出:10

6. 延遲執行的函式

將函式表達式賦值給變數,並根據條件執行。

const logMessage = function () {
console.log('這是一個延遲執行的函式');
};

setTimeout(logMessage, 1000); // 1秒後執行
avatar-img
0會員
18內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
koko的沙龍 的其他內容
DOM (Document Object Model) 是瀏覽器用於操作 HTML 或 XML 文件的編程介面。它將文檔解析為一個節點樹 (Node Tree),每個節點代表文檔的一部分(標籤、屬性、文字等)。
JSON.parse:將 JSON 格式的字串轉換為 JavaScript 物件,常用於解析後端返回的資料或本地存儲中的 JSON。JSON.stringify:將 JavaScript 的物件或陣列轉換為 JSON 格式字串,方便用於資料儲存或傳輸。
瀏覽器中三種主要的客戶端儲存方式:Cookie、LocalStorage 和 SessionStorage。
JavaScript 的事件處理是網頁開發中的重要部分,本文將介紹兩個常用的方法:event.stopPropagation() 與 event.preventDefault(),並簡要說明它們的作用與使用情境。
時間複雜度是指一個演算法在執行時所需要的時間,通常是根據輸入數據的大小𝑛來評估。時間複雜度的高低直接影響演算法在面對大量數據時的效率,因此理解時間複雜度有助於評估不同解法的性能。
在 JavaScript 中,資料型別主要分為原始型(Primitive Type)和引用型(Reference Type)。
DOM (Document Object Model) 是瀏覽器用於操作 HTML 或 XML 文件的編程介面。它將文檔解析為一個節點樹 (Node Tree),每個節點代表文檔的一部分(標籤、屬性、文字等)。
JSON.parse:將 JSON 格式的字串轉換為 JavaScript 物件,常用於解析後端返回的資料或本地存儲中的 JSON。JSON.stringify:將 JavaScript 的物件或陣列轉換為 JSON 格式字串,方便用於資料儲存或傳輸。
瀏覽器中三種主要的客戶端儲存方式:Cookie、LocalStorage 和 SessionStorage。
JavaScript 的事件處理是網頁開發中的重要部分,本文將介紹兩個常用的方法:event.stopPropagation() 與 event.preventDefault(),並簡要說明它們的作用與使用情境。
時間複雜度是指一個演算法在執行時所需要的時間,通常是根據輸入數據的大小𝑛來評估。時間複雜度的高低直接影響演算法在面對大量數據時的效率,因此理解時間複雜度有助於評估不同解法的性能。
在 JavaScript 中,資料型別主要分為原始型(Primitive Type)和引用型(Reference Type)。
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
主要來講宣告函式跟箭頭函式 : 宣告函式(Function Declaration) 語法: function functionName(parameters) { return result; } 特點: 使用 function 關鍵字 函式名稱是必需的 存在函式
Thumbnail
一般在使用 TypeScript 的時候,大家都有遇過定義列舉資料的情境吧。 不過不管是 enum 和 literal 的方式其實都有些小缺點,以下推薦一個個人認為體驗更好的方式。
就是指變數可以被訪問和使用的範圍,來說一下var、let和const的作用域差異。 var :function example() { console.log(x); // 輸出: undefined 因為變量提升造成的 var x = 5; } 函數作用域或全域作用域 可以重複宣告
Thumbnail
本章節旨在介紹TypeScript中的函數,包括其基本結構、如何呼叫函數、函數的參數以及函數的返回值等相關概念。通過本章節,讀者可以學習到如何在TypeScript中使用不同的方式來定義函數,如函數聲明、函數表達式、箭頭函數和匿名函數等。
首先定義符號: 因此我們有​ 其中 再定義State Avtion Value.Function、Value Function和Advantage Function分別為: 接著我定義 此外觀察上述定義,能有 因此我有以下展開 這時回顧 因此我有 結合之後得到 移項之後得到 接
※ 函式基礎介紹: ※ JavaScript 特殊的函式特性: 函式可以當成值來傳遞 (可以放進變數或放進物件) 函式可以當成函式的參數 callback - 在特定事件中觸發函式 (非同步特性) ※ 函式的基本寫法: ※ 調用 (invoke) 函式: "調用" 意指呼叫或執行
Thumbnail
JavaScript 套件,頁碼 Pagination.js 搭配 axios API 請求範例
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
主要來講宣告函式跟箭頭函式 : 宣告函式(Function Declaration) 語法: function functionName(parameters) { return result; } 特點: 使用 function 關鍵字 函式名稱是必需的 存在函式
Thumbnail
一般在使用 TypeScript 的時候,大家都有遇過定義列舉資料的情境吧。 不過不管是 enum 和 literal 的方式其實都有些小缺點,以下推薦一個個人認為體驗更好的方式。
就是指變數可以被訪問和使用的範圍,來說一下var、let和const的作用域差異。 var :function example() { console.log(x); // 輸出: undefined 因為變量提升造成的 var x = 5; } 函數作用域或全域作用域 可以重複宣告
Thumbnail
本章節旨在介紹TypeScript中的函數,包括其基本結構、如何呼叫函數、函數的參數以及函數的返回值等相關概念。通過本章節,讀者可以學習到如何在TypeScript中使用不同的方式來定義函數,如函數聲明、函數表達式、箭頭函數和匿名函數等。
首先定義符號: 因此我們有​ 其中 再定義State Avtion Value.Function、Value Function和Advantage Function分別為: 接著我定義 此外觀察上述定義,能有 因此我有以下展開 這時回顧 因此我有 結合之後得到 移項之後得到 接
※ 函式基礎介紹: ※ JavaScript 特殊的函式特性: 函式可以當成值來傳遞 (可以放進變數或放進物件) 函式可以當成函式的參數 callback - 在特定事件中觸發函式 (非同步特性) ※ 函式的基本寫法: ※ 調用 (invoke) 函式: "調用" 意指呼叫或執行
Thumbnail
JavaScript 套件,頁碼 Pagination.js 搭配 axios API 請求範例