0%

JS 核心觀念筆記 - 立即函式 IIFE

core

什麼是立即函式

MDN 說明:立即函式的英文縮寫為 IIFE (Immediately Invoked Function Expression) 是一個定義完馬上就執行的函式。
(非常白話)

立即函式起手式

前面一篇已經知道有具名與匿名的函式,都要透過呼叫來使用其函式,具名函式如果把名稱拿掉,編譯器會提醒錯誤資訊,且無法執行。但如果想要不要呼叫立刻執行該怎麼寫?

1
function IIFE() {}

上方為一個函式,如果不要呼叫就要讓函式立刻執行,可以這樣寫:

  • 這個函式最外面加上一個小括號
  • 在函式的大括號後面加上一個小括號。
1
2
3
(function IIFE() {
console.log("立即函式");
})();

或是

1
2
3
(function IIFE() {
console.log("立即函式");
})();

以上得到的結果是一樣的。

立即函式有兩個特性

  • 立刻執行。
  • 無法在函式外被再次執行。
1
2
3
4
5
(function IIFE() {
console.log("立即函式");
})();

console.log(IIFE); //會跳錯

立即函式使用情境

限制變數作用域

1
2
3
4
5
6
(function () {
let Tim = "提姆";
console.log(Tim);
})();

console.log(Tim);

亦可帶參數

1
2
3
(function (Tim) {
console.log(Tim);
})("Tim is here");

可搭配匿名函式使用

1
2
3
4
5
let whereTim = (function (Tim) {
console.log(Tim);
return Tim;
})("Tim is here");
console.log(whereTim);