Синтаксис

eval(codeStr)

Аргументы

codeStr
код для выполнения, может использовать переменные и свойства существующих объектов

Описание, примеры

a = "alert(1)"
eval(a)

Метод eval возвращает значение последнего вычисленного выражения.

var str = "if (a) { 1+1 } else { 1+2 }"
var a = true
var 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) {
    return eval(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) // современный вариант
}