--- title: IIFE (即時実行関数式) slug: Glossary/IIFE tags: - CodingScripting - DesignPattern - Functions - Glossary - JavaScript - デザインパターン - 用語集 - 関数 translation_of: Glossary/IIFE --- <p><strong>IIFE</strong> (Immediately Invoked Function Expression; 即時実行関数式) は定義されるとすぐに実行される {{glossary("JavaScript")}} の {{glossary("function", "関数")}} です。</p> <pre class="brush: js">(function () { 文 })();</pre> <p>このデザインパターンは{{glossary("Self-Executing Anonymous Function", "自己実行無名関数")}}とも呼ばれ、次の2つの主な部分から成ります。</p> <ol> <li>最初の部分は {{jsxref("Operators/Grouping", "グループ化演算子")}} <code>()</code> に囲まれた静的スコープ付きの無名関数です。これは IIFE イディオム内で、汚いグローバルスコープと同様に変数へアクセスすることを防ぎます。</li> <li>2つ目の部分は即時実行関数式の <code>()</code> で、これを通じて JavaScript エンジンは直接関数を解釈実行します。</li> </ol> <h2 id="Examples" name="Examples">例</h2> <p>この関数は即時実行される関数式になります。関数式内の変数は外部からアクセスできません。</p> <pre class="brush: js">(function () { var aName = "Barry"; })(); // 変数 aName はスコープ外からアクセスできません aName // "Uncaught ReferenceError: aName is not defined" が発生します </pre> <p>IIFE を変数に代入することはその結果だけが保存されます。</p> <pre class="brush: js">var result = (function () { var name = "Barry"; return name; })(); // Immediately creates the output: result; // "Barry"</pre> <section id="Quick_links"> <ol> <li>学習記事 <ol> <li><a href="/ja/docs/Web/JavaScript/A_re-introduction_to_JavaScript#Functions">簡単な例</a> (「関数」の節の最後、「カスタムオブジェクト」の直前)</li> </ol> </li> <li>Wikipedia の記事 <ol> <li>{{interwiki("wikipedia", "en:Immediately-invoked function expression", "IIFE")}} (英語)</li> </ol> </li> <li><a href="/ja/docs/Glossary">用語集</a> <ol> <li>{{Glossary("Function", "関数")}}</li> <li>{{Glossary("Self-Executing Anonymous Function", "自己実行無名関数")}}</li> </ol> </li> </ol> </section>