Функция eval
Функция eval вычисляет строку как числовое выражение.
Синтаксис
eval (string)
string - любая строка, представляющая выражение JavaScript, утверждение, или последовательность утверждений. Выражение может включать переменные и свойства существующих объектов.
Описание
Функция eval - встроенная JavaScript функция. Это - не метод, связанный с любым объектом, но - часть языка непосредственно.
Аргумент функции eval - строка. Не вызовайте eval, чтобы вычислить арифметическое выражение. JavaScript вычисляет арифметические выражения автоматически. Если аргумент представляет выражение, eval вычисляет выражение.
В случае получения строки функция eval пытается преобразовать ее в числовое выражение, затем вычисляет это выражение и возвращает получившийся результат.
Примеры
Пример 1. Оба из ниже приведенных утверждений показывают 42. Первый вычисляет строку " x + y + 1 ", а второй вычисляет строку "42".
var x = 2
var y = 39
var z = "42"
document.write(eval("x + y + 1"))
document.write(eval(z))
Пример 2. В следующем примере, функция getFieldName (n) возвращает имя энного элемента формы как строку. Первое утверждение присваевает значение строке третьего элемента формы к переменной field. Второе утверждение использует eval, чтобы показать значение элемента формы.
var field = getFieldName(3)
document.write("The field named ", field, " has value of ",
eval(field + ".value"))
Пример 3. Следующий пример использует eval, чтобы вычислить строку str. Эта строка состоит из JavaScript утверждений, которые открывают диалоговое окно alert и присваивают z значение 42, если x - пять, и ноль иначе. Когда второе утверждение выполнено, то утверждения выполняються, и вычисляют набор утверждений и возвращают значение, которое присвоено z.
var str = "if (x == 5) {alert('z is 42'); z = 42;}
else z = 0; "
document.write("z is ", eval(str))
Пример 4. В следующем примере, функция setValue () использует eval, чтобы присвоить значение переменному newValue в текстовой области textObject.
function setValue (textObject, newValue) {
eval ("document.forms[0]." + textObject + ".value") = newValue
}