JavaScript 基礎
JavaScript 立即調用函式 IIFE (Immediately Invoked Function Expression) 是什麼?優缺點是什麼?
什麼是 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. 執行初始化邏輯
適合執行一次性的初始化程式碼。
缺點
- 可讀性較差:語法較為晦澀,不直觀
- 難以測試:IIFE 內部邏輯不易進行單元測試
- 現代替代方案:ES6 的
let/const有塊級作用域,模組系統(ESM)也提供了更好的封裝方式,IIFE 的使用場景已大幅減少
現代替代
// ES6 模組(推薦)
// module.js 中的變數天然是私有的
// 塊級作用域
{
let secret = '123';
}
console.log(typeof secret); // 'undefined'
✦ AI 模擬面試
輸入你的答案,AI 即時分析精準度與改進空間
登入後即可使用 AI 評分
