forked from iliakan/es5
-
Notifications
You must be signed in to change notification settings - Fork 0
/
x16.html
executable file
·64 lines (63 loc) · 8.22 KB
/
x16.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
<!DOCTYPE html>
<html class="split chapter"><head>
<meta charset="utf-8"><title>16 Ошибки # # Ⓣ Ⓔ ① Ⓐ — ES5 с аннотациями</title><link rel="stylesheet" href="style.css"><link href="x15.12.html" title="15.12 Объект JSON " rel="prev">
<link href="spec.html" title="Содержание" rel="index">
<link href="A.html" title="Приложение A (информационное) Краткое описание грамматик " rel="next">
</head><body><div class="head">
<h2 id="top">Спецификация ECMAScript 5.1 с аннотациями <span id="timestamp"></span></h2>
<div id="mascot-treehouse">
<img id="mascot" align="left" src="js-mascot.svg" alt=""><img id="bubble" src="bubble.svg" alt=""></div>
<p id="slogan"></p>
<div id="annotations"></div>
<script src="timestamp.js"></script></div>
<nav>
<a href="x15.12.html">← 15.12 Объект JSON </a> –
<a href="spec.html" class="toc-nav">Содержание</a> –
<a href="A.html">Приложение A (информационное) Краткое описание грамматик →</a>
<h2 id="x16">16 Ошибки <a href="#x16">#</a> <a href="#x16-toc" class="bak">Ⓣ</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b></h2>
<p>
В большинстве случаев реализация должна сообщать об ошибках в момент вычисления соответствующей языковой конструкции ECMAScript. <i>Ранняя ошибка </i><em>early error</em> – это ошибка, которую реализация может обнаружить и о которой может сообщить до вычисления конструкции в <i><a href="x14.html#x14">Программе</a></i>, содержащей эту ошибку. Реализация должна сообщать о ранних ошибках в <i><a href="x14.html#x14">Программе</a></i> до первого вычисления этой <i><a href="x14.html#x14">Программы</a></i>. Сообщения о ранних ошибках в <b>eval</b>-коде появляются в момент вызова <code><b>eval</b></code>, но до момента вычисления какой-либо конструкции внутри этого <b>eval</b>-кода. Все ошибки, не являющиеся ранними ошибками, представляют собой ошибки времени исполнения <em>runtime errors</em>.</p>
<p>
Реализация должна рассматривать все случаи следующих ошибок как раннюю ошибку:</p>
<ul><li><p>
Любая синтаксическая ошибка.</p>
</li>
<li><p>
Попытка определить <i>ObjectLiteral</i>, который имеет несколько присваиваний свойств <b>get </b>с одинаковым именем или несколько присваиваний свойств <b>set </b>с одинаковым именем.</p>
</li>
<li><p>
Попытка определить <i>ObjectLiteral</i>, который имеет одновременно и присваивание свойства данных и присваивание свойства <b>get </b>или <b>set </b>с одинаковым именем.</p>
</li>
<li><p>
Ошибки в <a href="x7.html#x7.8.5">литералах регулярного выражения</a>, которые не являются синтаксическими расширениями, зависящими от реализации.</p>
</li>
<li><p>
Попытки в <a href="x10.html#x10.1.1" class="term-ref">коде в строгом режиме</a> определить <i>ObjectLiteral</i>, имеющий несколько присваиваний свойств данных с одним и тем же именем.</p>
</li>
<li><p>
Появление <i>WithStatement</i> в <a href="x10.html#x10.1.1" class="term-ref">коде в строгом режиме</a>.</p>
</li>
<li><p>
Появление значения идентификатора <i>Identifier</i> более одного раза в <i>FormalParameterList</i> для отдельного <a href="x13.html#x13">FunctionDeclaration</a> или <a href="x13.html#x13">FunctionExpression</a> в строгом режиме.</p>
</li>
<li><p>
Некорректное использование <code><b>return</b></code>, <code><b>break</b></code> и <code><b>continue</b></code>.</p>
</li>
<li><p>
Попытки вызвать <a href="x8.html#x8.7.2">PutValue</a> для значения, по которому можно заранее определить, что оно не является <a href="x8.html#x8.7">Reference</a> (например, при выполнении инструкции присваивания <code>3=4</code>).</p>
</li></ul><p>
Реализация не должна трактовать другие ошибки как ранние ошибки, даже если компилятор может доказать, что конструкция ни при каких обстоятельствам не может быть выполнена без ошибки. В таком случае реализация может выдать ранее предупреждение, но она не должна сообщать об ошибке до момента фактического выполнения соответствующей конструкции.
</p>
<p>
Реализация должна сообщать обо всех ошибках как указано, за исключением следующих моментов:</p>
<ul><li><p>
Реализация может расширить синтаксис программы и шаблон регулярного выражения или синтаксис флага. Для этого всем операциям, которым разрешено генерировать <b><a href="x15.11.html#x15.11.6.4" class="term-ref">SyntaxError</a></b>, (таким как вызов <code><b>eval</b></code>, использование литерала регулярного выражения, или использование конструктора <code><b>Function</b></code> или <code><b>RegExp</b></code>), разрешается демонстрировать поведение, зависящее от реализации, а не генерировать <b><a href="x15.11.html#x15.11.6.4" class="term-ref">SyntaxError</a></b> в случае, когда они встречают зависящее от реализации расширение синтаксиса программы или шаблона регулярного выражения или синтаксиса флагов.</p>
</li>
<li><p>
Реализация может предоставлять дополнительные типы, значения, объекты, свойства и функции, кроме описанных в данной спецификации. В результате некоторые конструкции (например, поиск переменной в глобальной области видимости) могут демонстрировать зависящее от реализации поведение, а не генерировать ошибку (например, <b><a href="x15.11.html#x15.11.6.3" class="term-ref">ReferenceError</a></b>).</p>
</li>
<li><p>
Реализация может определить поведение, отличное от генерирования ошибки <b><a href="x15.11.html#x15.11.6.2" class="term-ref">RangeError</a></b> для методов <code><b>toFixed</b></code>, <code><b>toExponential</b></code> и <code><b>toPrecision</b></code>, когда их аргументы <i>fractionDigits</i> или <i>precision</i> находятся вне заданного диапазона.</p>
</li></ul><p>
</p>
</body><script src="anno.js"></script></html>