Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

Косвенный вызов, ES5

Согласно спецификации 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.

try {

alert("Результат: " + eval(prompt("Введите выражение:","")));

}

catch(exception) { alert(exception);

}

EvalError

генерируется при некорректном использовании 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(имена_аргументов..., тело)

Аргументы

имена_аргументов...

Любое количество строковых аргументов, которые присваивают имя одному или нескольким аргументам создаваемого объекта

Function
.

тело

Поделиться:
Популярные книги

Иван Грозный: Кровавый поэт

Бушков Александр Александрович
Научно-образовательная:
история
6.67
рейтинг книги
Иван Грозный: Кровавый поэт

Варяг

Мазин Александр Владимирович
1. Варяг
Фантастика:
альтернативная история
9.10
рейтинг книги
Варяг

Родословная. Том 2

Ткачев Андрей Юрьевич
2. Линия крови
Фантастика:
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Родословная. Том 2

Поход

Валериев Игорь
4. Ермак
Фантастика:
боевая фантастика
альтернативная история
6.25
рейтинг книги
Поход

Рождественский детектив (сборник рассказов)

Полякова Татьяна Викторовна
Детективы:
прочие детективы
6.00
рейтинг книги
Рождественский детектив (сборник рассказов)

Газлайтер. Том 29

Володин Григорий Григорьевич
29. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 29

Забытые боги

Рокотов Алексей
4. Путь князя
Фантастика:
фэнтези
рпг
попаданцы
5.00
рейтинг книги
Забытые боги

Руководство по системной поведенченской психотерапии

Курпатов Андрей Владимирович
Научно-образовательная:
психотерапия и консультирование
5.00
рейтинг книги
Руководство по системной поведенченской психотерапии

Изгои

Владимиров Денис
5. Глэрд
Фантастика:
фэнтези
боевая фантастика
5.00
рейтинг книги
Изгои

Gloster Gladiator

Иванов С. В.
72. Война в воздухе
Научно-образовательная:
история
военная техника и вооружение
военная история
5.00
рейтинг книги
Gloster Gladiator

Бастард Императора. Том 5

Орлов Андрей Юрьевич
5. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 5

Тринадцатый IX

NikL
9. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
сказочная фантастика
5.00
рейтинг книги
Тринадцатый IX

Грон. Трилогия

Злотников Роман Валерьевич
Грон
Фантастика:
боевая фантастика
попаданцы
8.48
рейтинг книги
Грон. Трилогия

Двойник короля 15

Скабер Артемий
15. Двойник Короля
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Двойник короля 15