JavaScript 基礎

JavaScript 立即調用函式 IIFE (Immediately Invoked Function Expression) 是什麼?優缺點是什麼?

AI 練習作答

什麼是 IIFE?

IIFE(Immediately Invoked Function Expression,立即執行函式)是一種在定義後立即執行的函式。

// 基本語法
(function() {
  // 函式主體
})();

// 箭頭函式版本
(() => {
  // 函式主體
})();

// 帶參數
(function(name) {
  console.log('Hello, ' + name);
})('World');

為什麼要包一層括號?

函式需要被包在括號內,讓 JavaScript parser 將其視為「表達式」而非「宣告」。沒有括號的話,function 關鍵字開頭會被解析成函式宣告,無法直接加 () 執行。

優點

1. 避免污染全域作用域

(function() {
  var secret = '123'; // 只存在於 IIFE 內部
})();

console.log(typeof secret); // 'undefined'

2. 建立私有作用域

模擬模組化,封裝變數與邏輯。

3. 避免變數衝突

在多個腳本共存的舊式環境中特別有用。

4. 執行初始化邏輯

適合執行一次性的初始化程式碼。

缺點

  1. 可讀性較差:語法較為晦澀,不直觀
  2. 難以測試:IIFE 內部邏輯不易進行單元測試
  3. 現代替代方案:ES6 的 let/const 有塊級作用域,模組系統(ESM)也提供了更好的封裝方式,IIFE 的使用場景已大幅減少

現代替代

// ES6 模組(推薦)
// module.js 中的變數天然是私有的

// 塊級作用域
{
  let secret = '123';
}
console.log(typeof secret); // 'undefined'

✦ AI 模擬面試

輸入你的答案,AI 即時分析精準度與改進空間

登入後即可使用 AI 評分