Мастер-классы по Javascript, AJAX/COMET, jQuery Узнать больше...
Javascript.RU

eval

Синтаксис

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) // современный вариант
}

Автор: Гость (не зарегистрирован), дата: 12 мая, 2010 - 21:40
#permalink

В современном javascript, как правило, можно воспользоваться другими языковыми средствами вместо eval

А подробней ?


Автор: Shevan, дата: 4 июня, 2010 - 15:46
#permalink

eval может выполнить код полученый аяксом?
И про другие средства хотелось бы услышать ))


Автор: B@rmaley.e><e, дата: 4 июня, 2010 - 20:38
#permalink

Да, можно.

Другие средства зависят от того, для чего Вы используете eval.


Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
2 + 2 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Вакансии
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Статьи и мероприятия

Будьте в курсе наших последних новостей!

Последние обсуждения на форуме
Forum
Последние комментарии