aboutsummaryrefslogtreecommitdiff
path: root/files/ru/glossary/iife/index.html
blob: 88496f42943e7b6bfeec094dab26874f8690e6c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
---
title: IIFE
slug: Glossary/IIFE
tags:
  - IIFE
  - JavaScript
  - Глоссарий
  - КодингСкриптинг
translation_of: Glossary/IIFE
original_slug: Словарь/IIFE
---
<p><strong>IIFE </strong>(Immediately Invoked Function Expression) это {{glossary("JavaScript")}} {{glossary("функция")}}, которая выполняется сразу же после того, как она была определена.</p>



<pre><code>(function () {
    statements
})();</code></pre>

<p>Это тип выражений, также известный как {{glossary("Self-Executing Anonymous Function")}}, который состоит из двух основных частей. Первая - это сама анонимная функция с лексической областью видимости, заключенным внутри {{jsxref("Operators/Grouping", "Оператора группировки")}} <code>()</code>. Благодаря этому переменные IIFE замыкаются в его пределах, и глобальная область видимости ими не засоряется.</p>

<p>Вторая часть создает мгновенно выполняющееся функциональное выражение  <code>()</code> , благодаря которому JavaScript-движок выполняет функцию напрямую.</p>



<h2 id="Примеры">Примеры</h2>

<p>Функция становится мгновенно выполняющимся функциональным выражением. Переменные внутри функции не могут быть использованы за пределами ее области видимости.</p>

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

<p>Переменная, которой присвоено IIFE, хранит в себе результат выполнения функции, но не саму функцию.</p>

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





<h2 id="Узнать_больше">Узнать больше</h2>

<h3 id="Материалы">Материалы</h3>

<ul>
 <li><a href="http://benalman.com/news/2010/11/immediately-invoked-function-expression/">Ben Alman's blog post defining IIFEs</a></li>
 <li><a href="/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript#Functions">Quick example</a> (в конце абзаца "Functions", сразу после "Custom objects")</li>
</ul>

<h3 id="Основные_понятия">Основные понятия</h3>

<ul>
 <li>{{interwiki("wikipedia", "Immediately-invoked function expression", "IIFE")}} на Wikipedia</li>
</ul>