Все. понял, кажется. Отличия в областях видимости.
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 )