Lauviah0622 / junior_frontend_program

1 stars 0 forks source link

[極短篇] 什麼是 IIFE? #13

Open Lauviah0622 opened 4 years ago

Lauviah0622 commented 4 years ago

什麼是 IIFE

Immediately Invoked Function Expression,立即調用函數表達式。好,這樣講一定霧颯颯,簡單說就是這樣。

(function () {
    statements
})();

你建立了一個 function,但不給他名子,然後直接執行他。

為什麼可以這樣用?

你會覺得奇怪的原因有三個

  1. function 沒有名子
  2. function 外面被一個 () 括號包住了
  3. function 後面直接加上 () 被執行了

我們先不談這三點,我們先談談 JS 比較基礎的東西: decalration 還有 expression

decalration 是甚麼?

var a;

console.log(a, b)

他聲名了一個變數,但是沒有做任何事情。像上面的情況,a 還有 b 都是 undefined。有這兩個變數,但是這兩個變數裡面空空的,沒有任何東西,所以是 undefined。

但是我們平常比較常這樣用

var a = 1;

所以上面其實做了兩件事情

  1. 宣告一個 a 的變數
  2. 然後把 1 塞到 a 裡面。

function

https://flaviocopes.com/javascript-expressions/#invocation-expressions

Lauviah0622 commented 4 years ago

覺得這個很有可能變長篇。 如果要從頭講的話,應該要從 Expression 還有 Statement 開始講

然後講道說 function 這個東西實際上是同時做了 expression 還有 Statement 這兩件事情。

https://masteringjs.io/tutorials/fundamentals/expressions

https://medium.com/launch-school/javascript-expressions-and-statements-4d32ac9c0e74

https://mariusschulz.com/blog/disassembling-javascripts-iife-syntax

https://flaviocopes.com/javascript-expressions/#invocation-expressions

這邊幾篇參考資料,之後再看看