forked from iliakan/es5
-
Notifications
You must be signed in to change notification settings - Fork 0
/
x14.html
executable file
·113 lines (106 loc) · 10 KB
/
x14.html
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<!DOCTYPE html>
<html class="split chapter"><head>
<meta charset="utf-8"><title>14 Программа Ⓣ Ⓔ ① Ⓐ — ES5 с аннотациями</title><link rel="stylesheet" href="style.css"><link href="x13.html" title="13 Определение функции " rel="prev">
<link href="index.html" title="Содержание" rel="index">
<link href="x15.html" title="15 Стандартные встроенные объекты ECMAScript " rel="next">
</head><body><div class="head">
<h2 id="top">Спецификация ECMAScript 5.1 с аннотациями <span id="timestamp"></span></h2>
<!--left..-->
<div id="slogan">
<div id="share-toggler">Поделиться</div>
<div class="share">
<a href="https://twitter.com/share" class="twitter-share-button" data-url="http://es5.javascript.ru/" data-lang="ru" data-size="large" data-count="horizontal">Твитнуть</a>
<div id="fb-root"></div>
<div style="margin-bottom:5px" class="fb-like" data-href="http://es5.javascript.ru" data-send="false" data-action="recommend" data-layout="button_count" data-width="300" data-show-faces="false" data-font="arial"></div>
<div class="vk-share-wrapper">
<script src="http://vkontakte.ru/js/api/share.js?9" charset="windows-1251"></script>
<script src="misc.js"></script>
</div>
<div style="margin-top:6px">
<g:plusone annotation="inline" href="http://es5.javascript.ru/" width="120" size="standard" style="vertical-align:middle"></g:plusone>
</div>
</div>
</div>
<!--..left-->
<div id="annotations">
</div>
</div>
<nav>
<a href="x13.html">← 13 Определение функции </a> –
<a href="index.html" class="toc-nav">Содержание</a> –
<a href="x15.html">15 Стандартные встроенные объекты ECMAScript →</a>
<ol class="toc"><li><a href="x14.html#x14" id="x14-toc">14 Программа</a>
<b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b> <ol><li><a href="x14.html#x14.1" id="x14.1-toc">14.1 Директивные прологи и директива "Use Strict"</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b> </li></ol></li></ol></nav>
<h2 id="x14">14 Программа <a href="#x14">#</a> <a href="#x14-toc" class="bak">Ⓣ</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b></h2>
<p class="tiny-btm">
<b>Синтаксис</b></p>
<p class="keep">
<i>Program </i><b>:</b></p>
<p class="def1-btm">
<i>SourceElements</i><sub>opt</sub></p>
<p class="keep">
<i>SourceElements </i><b>:</b></p>
<p class="def1-btm">
<i>SourceElement<br>SourceElements SourceElement</i></p>
<p class="keep">
<i>SourceElement </i><b>:</b></p>
<p class="def1-btm">
<i><a href="x12.html#x12">Statement</a><br><a href="x13.html#x13">FunctionDeclaration</a></i></p>
<p class="tiny-btm">
<b>Семантика</b></p>
<p>
Для вычисления <i>Program </i><b>: </b><i>SourceElements</i><sub>opt</sub><code></code> выполняются следующие шаги:</p>
<ol><li><p>
Код этой программы <i>Program</i> является <a href="x10.html#x10.1.1" class="term-ref">кодом в строгом режиме</a>, если Директивный пролог (<a href="#x14.1">14.1</a>) для его <i>SourceElements</i> <tt>Элементы исходного кода</tt> содержит директиву "Use Strict", или если применимо какое-либо из условий, указанных в пункте <a href="x10.html#x10.1.1">10.1.1</a>. Если код этой программы <i>Program </i>является <a href="x10.html#x10.1.1" class="term-ref">кодом в строгом режиме</a>, то <i>SourceElements</i> в следующих шагах вычисляется как <a href="x10.html#x10.1.1" class="term-ref">код в строгом режиме</a>. В противном случае <i>SourceElements</i> в следующих шагах вычисляется как код не <a href="x10.html#x10.1.1" class="term-ref">в строгом режиме</a>.</p>
</li>
<li><p>
Если <i>SourceElements</i> отсутствует, вернуть (normal, empty, empty).</p>
</li>
<li><p>
Пусть <i>progCxt</i> будет новым контекстом исполнения для <a href="x10.html#global-code">глобального кода</a>, как описано в пункте <a href="x10.html#x10.4.1">10.4.1</a>.
</p>
</li>
<li><p>
Пусть <i>result </i>будет результатом вычисления <i>SourceElements</i>.</p>
</li>
<li><p>
Выйти из контекста исполнения <i>progCxt</i>.</p>
</li>
<li><p>
Вернуть <i>result</i>.</p>
</li></ol><p><b>ПРИМЕЧАНИЕ</b> Процесс инициирования вычисления программы <i>Program</i>, а также процесс обработки результата этого вычисления определяются не данной спецификацией, а реализацией ECMAScript.</p>
<p>
Для вычисления <i>SourceElements</i> <b>:</b> <i>SourceElements</i> <i>SourceElement</i> выполняются следующие шаги:</p>
<ol><li><p>
Пусть <i>headResult </i>будет результатом вычисления <i>SourceElements</i>.</p>
</li>
<li><p>
Если <i>headResult</i> – <a href="x8.html#x8.9">непредвиденное завершение</a>, вернуть <i>headResult</i>.</p>
</li>
<li><p>
Пусть <i>tailResult </i>будет результатом вычисления <i>SourceElement</i>.</p>
</li>
<li><p>
Если <i>tailResult</i>.value равно empty, пусть <i>V</i> = <i>headResult</i>.value, в противном случае пусть <i>V</i> = <i>tailResult</i>.value.</p>
</li>
<li><p>
Вернуть (tailResult.type, V, tailResult.target)
</p>
</li></ol><p>
Для вычисления <i>SourceElement </i><b>:</b> <i>Statement</i> выполняются следующие шаги:</p>
<ol><li><p>
Вернуть результат вычисления <a href="x12.html#x12"><I>Statement</I></a>.</p>
</li></ol><p>
Для вычисления <i>SourceElement </i><b>:</b> <a href="x13.html#x13"><I>FunctionDeclaration</I></a> выполняются следующие шаги:</p>
<ol><li><p>
Вернуть (normal, empty, empty).</p>
</li></ol>
<h3 id="x14.1">14.1 Директивные прологи и директива "Use Strict" <a href="#x14.1">#</a> <a href="#x14.1-toc" class="bak">Ⓣ</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b></h3>
<p>
Директивный пролог является самой длинной последовательностью порождающих правил <i>ExpressionStatement </i><tt>Инструкция-выражение</tt>, встречающихся в <i><a href="#x14">Program</a></i> или в <i><a href="x13.html#x13">FunctionBody</a></i> в качестве исходных порождающих правил <i>SourceElement</i> <tt>Элемент исходного кода</tt>, где каждая <i>ExpressionStatement </i>в последовательности полностью состоит из токена <i>StringLiteral</i> <tt>Строковый литерал</tt> с последующей точкой с запятой. Точка с запятой может быть указана явно, или может быть вставлена посредством <a href="x7.html#x7.9">автоматической подстановки точки с запятой</a>. Директивный пролог может представлять собой пустую последовательность.</p>
<p>
Директива "Use Strict" представляет собой инструкцию-выражение <i>ExpressionStatement</i> в Директивном прологе, строковый литерал которой – точная последовательность символов <code><b>"use</b></code><code> </code><code><b>strict"</b></code> или <code><b> 'use</b></code><code> </code><code><b>strict'</b></code>. Директива "Use Strict" не может содержать <i>EscapeSequence</i> <tt>Управляющая последовательность</tt> или <i>LineContinuation</i> <tt>Продолжение строки</tt>.</p>
<p>
Директивный пролог может содержать более одной директивы "Use Strict", однако в этом случае реализация может сгенерировать предупреждение.</p>
<p><b>ПРИМЕЧАНИЕ</b> Порождающие правила <i>ExpressionStatement</i> для Директивного пролога, как правило, вычисляются во время вычисления правила <i>SourceElements</i>, в которое они вложены. Реализации могут определять обусловленные реализацией значения для правил <i>ExpressionStatement</i>, не являющихся Директивой "Use Strict", которые встречаются в Директивном прологе. При наличии соответствующего механизма уведомлений реализация должна сгенерировать исключение, если в Директивном прологе ей встретится <i>ExpressionStatement</i>, которое не является директивой "Use Strict" или которое не имеет определяемого реализацией значения.</p>
</body><script src="anno.js"></script></html>