Скажем, у меня есть строка 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()
, либо снабдить его более простым аргументом?