Javascript.RU

Ошибки

Update: Более новый материал по этой теме находится по адресу http://es5.javascript.ru.
16 Ошибки

Реализация языка должна выдавать ошибки выполнения в тот момент, когда вычисляется значение соответствующей конструкции языка. Реализация может по своему усмотрению либо выдавать все синтаксические ошибки на этапе чтения программы, либо отложить выдачу синтаксической ошибки до момента исполнения соответствующей инструкции. Реализация может по своему усмотрению либо выдавать все синтаксические ошибки в eval-коде в момент вызова eval, либо отложить выдачу синтаксической ошибки до момента исполнения соответствующей инструкции.

Реализация может обрабатывать каждый экземпляр следующих типов ошибок исполнения как синтаксическую ошибку и, таким образом, выдавать её на этапе анализа кода:

  • Некорректное использование return, break и continue.
  • Использование свойства eval каким-либо другим способом, кроме прямого вызова.
  • Ошибки в литералах регулярных выражений.
  • Попытки вызвать свойство PutValue для значения, не являющегося ссылкой (например, выполнение присваивания 3=4).

Реализация не должна выдавать других ошибок выполнения на этапе анализа кода, даже если компилятор может доказать, что некоторая конструкция не может быть выполнена без ошибки при любых обстоятельствах. Реализация может в этом случае выдавать предварительное предупреждение, но не должна выдавать ошибки до действительного выполнения соответствующей конструкции.

Реализация должна выдавать все ошибки согласно описанию, за исключением следующего:

  • Реализация может расширять синтаксис программы и регулярных выражений. Чтобы сделать это возможным, всем операциям (такие как вызов eval, использование литерала регулярного выражения или вызов функции Function или конструктора RegExp), которые могут бросать исключение SyntaxError, разрешается вести себя некоторым определённым реализацией способом, вместо того, чтобы бросать исключение SyntaxError, когда им встречается определённое реализацией расширение синтаксиса программы и регулярных выражений.
  • Реализация может вводить дополнительные типы, значения, объекты, свойства и функции, помимо определённых в данной спецификации. Эти добавления могут ввести для некоторых конструкций языка (таких, как обращение к переменной в глобальной области видимости) некоторое зависящее от реализации поведение, вместо бросания ошибки (такой как ReferenceError).
  • От реализации не требуется обнаруживать EvalError. Если она выбирает не обнаруживать EvalError, реализация должна позволить непрямое использование eval и/или присвоения свойству eval.
  • Реализация может определить для методов toFixed, toExponential и toPrecision поведение, отличающееся от бросания RangeError, для тех случаев, когда значение аргумента fractionDigits или precision находится вне указанного диапазона.

 
Текущий раздел
Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние темы на форуме
Forum