eval("(function(x){return x*x;})")
... прекрасно работает в IE9 в обычном режиме ( live proof ) (но см. Ниже).Это не значит, что это хорошая идея (очень, очень мало случаев использования eval
квалифицируются как что-то иное, чем то, чего следует избегать), но это работает.
Это также работает (и должно работать) в последних версиях Chrome, Firefox и Opera.
Это не не работает в IE6, IE7, IE8 или IE9 в"вид совместимости".Это было бы ошибкой (очевидно, исправленной вместе с около тысячи других с более новым движком JavaScript в IE9), в выражении нет ничего плохого.
В более ранних версиях вы можете исправить это, заставив парсерпонять, что это выражение ( живая копия ):
eval("(0 || function(x){return x*x;})")