整理這些技術筆記真的很花時間,如果你願意 關閉 Adblock 支持我,我會把這份感謝轉換成更多「踩坑轉避坑」的內容給你!ヽ(・∀・)ノ
[JS奇怪的世界]No.40 框架小叮嚀:Function Factories
前言
在 JavaScript 中閉包有許多好用的地方,所以這堂課將會來講解如何利用閉包來做一些特別特殊的東西甚至是一些看起來不可能的模式。
Function Factories
在這邊我們將試著去利用閉包寫出更有威力更有彈性的程式。
1 | |
由上面範例我們可以看到 greetEnglish、greetSpanish 會指向回傳函數。

但是這邊我們要注意到一件事情 greetEnglish 與 greetSpanish 執行環境的 language 都是獨一無二的,不信?我們可以試著用console.log() 來看。
1 | |

所以我們可以知道,每次執行 makeGreeting 就會產生一個獨一無二的執行環境,那我們也就可以試著去呼叫 greetEnglish 與 greetSpanish。
1 | |
那經過前面的觀念瞭解想必我們已經大概知道結果了。

但是這邊要注意一件事情,我們並沒有辦法直接取用 language 變數,因為這被藏起來再全域環境了,但是函數內是沒有問題的。
讓我們盡可能白話瞭解一下 Function Factories,就是 makeGreeting 類似每一個都是一間房子,然後每一間都有獨立空間,所以我們用圖片來講會更清楚。

圖源
整理這些技術筆記真的很花時間,如果你願意 關閉 Adblock 支持我,我會把這份感謝轉換成更多「踩坑轉避坑」的內容給你!ヽ(・∀・)ノ