(2) 立即函式(IIFE) 是什麼

立即函式 (IIFE)

立即函式 (Immediately Invoked Function Expression)。

其實本身就是一個可立刻執行的函式,常被使用在只會執行一次的程式碼。

例如:初始化的動作,並且可將程式碼包起來,形成一個區域,避免與全域變數汙染。

使用立即函式的優點

  1. 全域變數減少:若重複宣告相同的全域變數則會被覆蓋,因為變數暴露在全域中很有可能會被其他地方的程式修改,因此可將變數放在立即函式裡面避免被異動。
  2. 全域變數區域化:把全域變數當做參數傳遞給立即函式,因為 JavaScript 在尋找變數時會優先查找區域變數,若找不到再去尋找上層或全域變數,所以在效率上可獲得微幅提升
  3. JavaScript 進行壓縮時,並不會對全域變數進行重新命名,區域變數則會重新命名,達到減少檔案大小。

在 function 內宣告區域變數

1
2
3
4
5
6
7
var a = 100;
(function () {
var b = true;
console.log(a); // 100
// 第二個括號代表著立即執行
})();
console.log(b); // b is not defined

傳入全域變數到立即函式內

1
2
3
4
5
6
7
8
(function (window, document) {
window.onerror = function () {
console.log("error");
}
document.querySelector("body").addEventListener("click", function () {
console.log("click");
})
})(window, document);

壓縮後變成

1
2
3
!function (o, n) { o.onerror = function () { console.log("error") },
n.querySelector("body").addEventListener("click", function () {
console.log("click") }) }(window, document);

(2) 立即函式(IIFE) 是什麼
https://phoebeho.com/js-advanced/20220211/4212272277/
作者
Phoebe
發布於
2022年2月11日
許可協議