JavaScript中的IIFE還會用得到嗎?
IIFE 的全名是 immediately-invoked function expression。
是在 JavaScript 中可以立即執行的函式,我個人比較少在實作上去使用到這個技術,但也是重要的概念。
可以立即執行代表著三件事情。
- 不需要去命名,既然可以馬上執行了,代表不需要一個名字來在之後呼叫它。
- 不需要透過呼叫,如第一點提到的。
- 無法在程式外再次執行。
實際上的寫法就是宣告完函數之後就直接執行,使用的方式就像是現在畫面上的圖片,用一個括號把函數括起來後,再接一個。
也可以使用帶參數的方式。
像是這樣:
1 | (function () { |
回到今天的問題,JavaScript 中的 IIFE 還會用得到嗎?
我個人覺得大部分情境下不太需要。
因為我覺得當初設計出 IIFE 的主要目的是在於模擬一個局部的作用域,防止污染,污染的意思是作用域裡面的變數不會影響作用域外面。
因為在 ES6 之前只有 function 的作用域(var),但在 ES6 之後引入’let’跟’const’還有箭頭函式,這些新的特性在某些情況下已經可以取代之前 IIFE 的功能。
雖說如此,但假如有情境是,你可能需要在一段程式碼的某一個區塊執行某一些功能,但不希望這區塊之外的地方的程式碼會再次去引用到這些功能,那在這種時候,IIFE 就能很好滿足這種需求了。
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Vic's Blog!
評論