Показать сообщение отдельно
  #8 (permalink)  
Старый 25.04.2008, 11:08
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Все. понял, кажется. Отличия в областях видимости.
eval во всех браузерах кроме ИЕ заносит все что создано в нем в глобальную область видимости. В ИЕ аналогично себя ведет execScript.
а вот eval в ИЕ, работает следующим образом: функции созданные с помощью "function my_func(){}", заносятся в локальную область видимости. в остальных случаях, в зависимости от ключевого слова var.
Вот пример для проверки(закоментированы те алерты, которых нет в глобальной области видимости)
function f2() {
  window.eval('function func_1() { alert(1) } '
			+'func_2=function() { alert(1) }; '
			+' var_1=123;'
			+' var var_2=456;');
  alert('func_1 \n' + func_1 +'\n_______\n'+
		'func_2 \n' + func_2 +'\n_______\n'+
		'var_1 \n'  + var_1+'\n_______\n'+
		'var_2 \n'  + var_2 );
}
f2();
  //alert('func_1 \n' + func_1)
  alert('func_2 \n' + func_2 )
  alert('var_1 \n'  + var_1)
  //alert('var_2 \n'  + var_2 )
Ответить с цитированием