IIFE (Immediately Invoked Function Expression; 即時実行関数式) は定義されるとすぐに実行される JavaScript の 関数 です。
(function () {
文
})();
このデザインパターンは自己実行無名関数とも呼ばれ、次の2つの主な部分から成ります。
- 最初の部分は
グループ化演算子
()
に囲まれた静的スコープ付きの無名関数です。これは IIFE イディオム内で、汚いグローバルスコープと同様に変数へアクセスすることを防ぎます。 - 2つ目の部分は即時実行関数式の
()
で、これを通じて JavaScript エンジンは直接関数を解釈実行します。
例
この関数は即時実行される関数式になります。関数式内の変数は外部からアクセスできません。
(function () {
var aName = "Barry";
})();
// 変数 aName はスコープ外からアクセスできません
aName // "Uncaught ReferenceError: aName is not defined" が発生します
IIFE を変数に代入することはその結果だけが保存されます。
var result = (function () {
var name = "Barry";
return name;
})();
// Immediately creates the output:
result; // "Barry"