Функция eval()
Здравствуйте.
У меня вопрос следующего характера. Есть фрагмент javascript-кода: var code_str = "func_1 = function() { alert('in'); } alert('out'); "; eval(code_str); Поскольку, я нигде функцию func_1 не вызываю, то после запуска кода должно выдать alert('out'). Но сообщения не показывается. Но если разделить функцию func_1 и alert символом перехода на новую строку, то все великолепно работает, то есть: var code_str = "func_1 = function() { alert('in'); } \n alert('out'); "; eval(code_str); Получается, что функция eval() обрабатывает построчно? Или я не правильно понимаю( Если кто-то может дать ссылку на ресурс, где можно прочитать о всех тонкостях eval() или объяснить, как правильно обрабатывать любого размера javascript-код посредством eval() ? Заранее спасибо большое. Забыл уточнить. Пока делаю только для браузера Opera. Кроссбраузерность потом :) Спасибо. |
А Вы не пробовали сначала почитать немного о синтаксисе JS?
func_1 = function() { alert('in'); } alert('out'); |
Цитата:
Здесь же, вызывает alert(), что вполне логично. Цитата:
var code_str = "func_1 = function() { alert('in'); }; alert('out'); "; eval(code_str); А для того чтобы вызвать первую функцию ее нужно определить, а затем вызвать: var code_str = "func_1 = function() {alert('in'); }; func_1(); alert('out'); "; eval(code_str); Поэтому правильней и проще всего так: eval("(function(){alert('in')})(); alert('out')"); |
Большое Вам спасибо.
Поставил плюсики. Спасибо парни еще раз :) |
Часовой пояс GMT +3, время: 14:30. |