文章加密

;

2021年4月6日 星期二

IIFE (Immediately Invoked Function Expression) 複習

 https://developer.mozilla.org/zh-TW/docs/Glossary/IIFE


Examples

Function 轉換為 expression 形式,並且馬上執行,function scope 內的變數在外面是無法存取的。

(function () {
    var aName = "Barry";
})();
// Variable name is not accessible from the outside scope
aName // throws "Uncaught ReferenceError: aName is not defined"

把 IIFE 只配給變數會儲存它的結果,而非 function 本身

var result = (function () {
    var name = "Barry";
    return name;
})();
// Immediately creates the output:
result; // "Barry"

其它形式

符合 JSLint 的版本,行為一樣,只有語意略有差異:

(function () {
    var aName = "Barry";
}());

Arrow function 版本,程式碼更為精簡,行為一致:

(() => {
    var aName = "Barry";
})();

Async function 版本,目前主要為了 top level await 而使用:

(async function () {
    var aName = "Barry";
})();

(async () => {
    var aName = "Barry";
})();

沒有留言:

張貼留言