код для выполнения, может использовать переменные и свойства существующих объектов
Описание, примеры
Пример:
a = "alert(1)"eval(a)
Метод eval возвращает значение последнего вычисленного выражения.
Пример:
var str = "if (a) { 1+1 } else { 1+2 }"var a = truevar b = eval(str)alert("b равно : " + b)// 2// теперь поменяем "a"
a = false
b = eval(str)alert("b равно : " + b)// 3
Если аргумент eval - не строка, то возвращается аргумент без изменения:
Пример:
r = new RegExp('a')
r == eval(r)// true
Можно обойти это прямым вызовом toString:
Пример:
function forceEval(obj){returneval(obj.toString())}
Не используйте eval
Выполнение кода в eval может быть небезопасно. При таком выполнении затруднена отладка. В современном javascript, как правило, можно воспользоваться другими языковыми средствами вместо eval.
eval для JSON
Как правило, eval используют для разбора формата JSON.
var = eval('('+json+')')
Такой способ небезопасен, но наиболее быстр.
Второй параметр
В старых реализациях javascript у eval мог быть второй параметр - объект obj, в контексте которого выполнялся код.
В современном javascript для этого используется with:
Пример:
Выделить все
eval(code, obj)// старый вариантwith(obj){eval(code)// современный вариант}
Это интересно
Дата-центр IBM в кампусе Сиракьюсского университета в штате Нью-Йорк — это результат эксперимента знаменитой технологической компании. Руководство IBM согласилось выделить средства на постройку и предоставить оборудование в том случае, если проектировщикам удастся снизить энергопотребление вдвое по сравнению с обычным центром той же мощности. В 2009 году строительство было завершено, что дало университету возможность закрыть старый IT-центр, располагавшийся в 100-летнем корпусе. Питает дата-центр собственная электростанция, работающая на газу и вырабатывающая электричество с помощью 12 микротурбин. Эта конструкция была разработана специально для этого проекта, а ее эффективность на 60% выше, чем у обычных газовых электростанций.