eval

Функция eval обрабатывает строку кода JavaScript без ссылки на определённый объект.

Синтаксис:

eval(string)

Параметр string строка представляющая выражение JavaScript, оператор или последовательность операторов. Выражение может содержать переменные и свойства существующих объектов.

Аргументом функции eval является строка. Если строка является выражением, eval вычисляет это выражение. Если аргументом является один или более операторов JavaScript, eval выполняет эти операторы. Не вызывайте eval для вычисления арифметических выражений; JavaScript вычисляет арифметические выражения автоматически.

Если Вы конструируете арифметическое выражение как строку, Вы можете использовать eval для вычисления его позднее. Например, предположим, у Вас имеется переменная x. Вы можете отложить вычисление выражения, включающего x, присвоив строковое значение выражения, скажем, "3 * x + 2", переменной, а затем вызвать eval из более поздней точки Вашего скрипта.

Если аргументом для eval не является строка, eval возвращает аргумент без изменений. В следующем примере специфицирован String-конструктор, и eval возвращает String-объект, а не вычисляет строку.

eval(new String("2+2")) // возвращает String-объект, содержащий "2+2"
eval("2+2")             // возвращает 4

Вы не можете косвенно вызвать функцию eval по имени, отличному от eval; если Вы это сделаете, может появиться ошибка времени выполнения. Например, Вы не должны использовать следующий код:

var x = 2
var y = 4
var myEval = eval
myEval("x + y")

Пример. В этом примере eval используется для вычисления строки str. Строка состоит из операторов JavaScript, которые открывают диалоговое окно Alert и присваивают переменной z значение 42, если x равен пяти, и присваивают 0 переменной z в ином случае. Когда выполняется второй оператор, eval вызывает выполнение вышеуказанных операторов, а также будет вычислять набор операторов и возвратит значение, присвоенной переменной z.

var str = "if (x == 5) {alert('z is 42'); z = 42;} else z = 0; "
document.write("<P>z is ", eval(str)

Пример. В этом примере функция setValue использует eval для присвоения значения переменной newValue текстовому полю textObject:

function setValue (textObject, newValue) {
   eval ("document.forms[0]." + textObject + ".value") = newValue
}