Согласно спецификации ECMAScript 5, вместо того чтобы возбудить исключение
EvalError
, косвенный вызов
eval
должен выполнить код в глобальной области видимости, игнорируя любые локальные переменные в текущей лексической области видимости. В ES5 можно выполнить присваивание
var geval = eval;
и затем использовать
geval
для выполнения кода в глобальной области видимости.
Непосредственный
и косвенный вызов, строгий режим
В строгом режиме объявления переменных и функций в коде определяют их в частной области видимости, которая действует только в данном вызове функции
eval.
Это означает, что в строгом режиме непосредственный вызов
eval
не может изменить лексическую область видимости, а косвенный вызов не может изменить глобальную область видимости. Эти правила действуют, если вызов
eval
выполняется в строгом режиме или если код начинается с директивы «use strict».
Функция
eval
в языке JavaScript предоставляет очень мощные возможности, тем не менее она не часто используется в реальных программах. Очевидной областью ее применения являются программы, работающие как рекурсивные интерпретаторы JavaScript или динамически генерирующие и выполняющие JavaScript-код. Большинство JavaScript-функций, принимающих строковые аргументы, могут также принимать аргументы других типов и перед обработкой просто преобразуют эти значения в строки. Метод
eval
ведет себя иначе. Если аргумент код не является элементарным строковым значением, он возвращается в неизменном виде. Поэтому будьте внимательны, чтобы случайно не передать функции
eval
объект
String
вместо элементарного строкового значения.
Пример
eval("1+2"); // Вернет 3
// Этот фрагмент использует клиентские JavaScript-методы для запроса выражения
// от пользователя и вывода результатов его вычисления.
// Подробности см. в описаниях клиентских методов Window.alert и Window.рrompt.
генерируется при некорректном использовании eval Objects Errors EvalError
Конструктор
new EvalError
new EvalErroг(сообщение)
Аргументы
сообщение Необязательное сообщение об ошибке с дополнительной информацией об исключении. Если
этот аргумент указан, он принимается в качестве значения свойства
message
объекта
EvalError
.
Возвращаемое значение
Вновь созданный объект
EvalError
. Если задан аргумент сообщение, объект
Error
возьмет его в качестве значения своего свойства
message
; в противном случае в качестве значения этого свойства будет использована строка по умолчанию, определенная реализацией. Когда конструктор
EvalError
вызывается как функция (без оператора
new
), он ведет себя точно так же, как при вызове с оператором
new
.
Свойства
message
Сообщение об ошибке с дополнительной информацией об исключении.
В этом свойстве хранится строка, переданная конструктору, или строка по умолчанию, определенная реализацией. Подробности см. в статье с описанием свойства
Error.message
.
name
Строка, определяющая тип исключения. Для всех объектов
EvalError
значение этого свойства равно «EvalError».
Описание
Экземпляры класса
EvalError
могут создаваться, когда глобальная функция
eval
вызывается с любым другим именем. Ограничения на способы вызова функции
eval
рассматриваются в ее описании. Информация о генерации и перехвате исключений приводится в статье, посвященной классу Error.
См. также
Error, Error.message, Error.name
Function
Function
функция JavaScript (Object->Function)
Синтаксис
function имя_функции(имена_аргументов) // Инструкция определения функции {
тело
}
function(имена _аргументов) { тело } // Литерал неименованной функции
имя_функции{значения_аргументов) // Вызов функции
Конструктор
new Function(имена_аргументов..., тело)
Аргументы
имена_аргументов...
Любое количество строковых аргументов, которые присваивают имя одному или нескольким аргументам создаваемого объекта