Инструменты пользователя

Инструменты сайта


eval

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

eval [2011/12/01 16:33] (текущий)
Строка 1: Строка 1:
 +====== eval ======
 +Функция **eval** обрабатывает строку кода [[JavaScript]] без ссылки на определённый объект.
  
 +Синтаксис:​
 +<​file>​
 +eval(string)
 +</​file>​
 +Параметр string строка представляющая выражение JavaScript, оператор или последовательность операторов. Выражение может содержать переменные и свойства существующих объектов.
 +
 +Аргументом функции eval является строка. Если строка является выражением,​ eval вычисляет это выражение. Если аргументом является один или более операторов JavaScript, eval выполняет эти операторы. Не вызывайте eval для вычисления арифметических выражений;​ JavaScript вычисляет арифметические выражения автоматически.
 +
 +Если Вы конструируете арифметическое выражение как строку,​ Вы можете использовать eval для вычисления его позднее. Например,​ предположим,​ у Вас имеется переменная x. Вы можете отложить вычисление выражения,​ включающего x, присвоив строковое значение выражения,​ скажем, ​ "3 * x + 2", переменной,​ а затем вызвать eval из более поздней точки Вашего скрипта.
 +
 +Если аргументом для eval не является строка,​ eval возвращает аргумент без изменений. В следующем примере специфицирован String-конструктор,​ и eval возвращает String-объект,​ а не вычисляет строку.
 +
 +<​file>​
 +eval(new String("​2+2"​)) // возвращает String-объект,​ содержащий "​2+2"​
 +eval("​2+2"​) ​            // возвращает 4
 +</​file>​
 +Вы не можете косвенно вызвать функцию eval по имени, отличному от eval; если Вы это сделаете,​ может появиться ошибка времени выполнения. Например,​ Вы не должны использовать следующий код:
 +<​file>​
 +var x = 2
 +var y = 4
 +var myEval = eval
 +myEval("​x + y")
 +</​file>​
 +**Пример**. В этом примере eval используется для вычисления строки str. Строка состоит из операторов JavaScript, которые открывают диалоговое окно Alert и присваивают переменной z значение 42, если x равен пяти, и присваивают 0 переменной z в ином случае. Когда выполняется второй оператор,​ eval вызывает выполнение вышеуказанных операторов,​ а также будет вычислять набор операторов и возвратит значение,​ присвоенной переменной z.
 +<​file>​
 +var str = "if (x == 5) {alert('​z is 42'); z = 42;} else z = 0; "
 +document.write("<​P>​z is ", eval(str)
 +</​file>​
 +**Пример**.
 +В этом примере функция setValue использует eval для присвоения значения переменной newValue текстовому полю textObject:
 +<​file>​
 +function setValue (textObject,​ newValue) {
 +   eval ("​document.forms[0]."​ + textObject + "​.value"​) = newValue
 +}
 +</​file>​
eval.txt · Последние изменения: 2011/12/01 16:33 (внешнее изменение)