Скажем, у меня есть строка Javascript, подобная следующей
var fnStr = "function(){blah1;blah2;blah3; }" ;
(Это может быть выражение, введенное пользователем, должным образом очищенное, или результат некоторых символических вычислений. Это действительно не имеет значения).
Я хочу определить fn
, как если бы в моем коде была следующая строка:
var fn = function(){blah1;blah2;blah3; } ;
Как мне это сделать?
Лучшее, что я придумал, это следующее:
var fn = eval("var f = function(){ return "+fnStr+";}; f() ;") ;
Это, кажется, делает трюк, даже если он использует страшный eval()
, и использует слегка запутанный аргумент. Могу ли я сделать лучше? То есть либо не использовать eval()
, либо предоставить более простой аргумент?