Функция 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, время: 09:45. |