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

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

Жанры

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
.

тело

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

На границе империй. Том 3

INDIGO
3. Фортуна дама переменчивая
Фантастика:
космическая фантастика
5.63
рейтинг книги
На границе империй. Том 3

Чехов книга 3

Гоблин (MeXXanik)
3. Адвокат Чехов
Фантастика:
попаданцы
альтернативная история
аниме
6.00
рейтинг книги
Чехов книга 3

Играть... в тебя

Зайцева Мария
3. Звериные повадки Симоновых
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Играть... в тебя

Неучтенный элемент. Том 9

NikL
9. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 9

#Бояръ-Аниме. Газлайтер. Том 11

Володин Григорий Григорьевич
11. История Телепата
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 11

Ожерелье Странника

Хаггард Генри Райдер
Приключения:
исторические приключения
7.50
рейтинг книги
Ожерелье Странника

Горизонт Вечности

Вайс Александр
11. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
Горизонт Вечности

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

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

День поминовения

Нотебоом Сэйс
Проза:
современная проза
5.00
рейтинг книги
День поминовения

Последний Герой. Том 1

Дамиров Рафаэль
1. Последний герой
Фантастика:
попаданцы
альтернативная история
фантастика: прочее
5.00
рейтинг книги
Последний Герой. Том 1

Черный Маг Императора 15

Герда Александр
15. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
сказочная фантастика
фэнтези
фантастика: прочее
5.00
рейтинг книги
Черный Маг Императора 15

Бандит 2

Щепетнов Евгений Владимирович
2. Петр Синельников
Фантастика:
боевая фантастика
5.73
рейтинг книги
Бандит 2

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

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

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

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