假设我有一个如下所示的 Javascript 字符串
var fnStr = "function(){blah1;blah2;blah3; }" ;
(这可能来自用户输入的、经过适当清理的表达式,或者可能是某些符号计算的结果。这真的无关紧要)。
我想定义fn
好像以下行在我的代码中:
var fn = function(){blah1;blah2;blah3; } ;
我怎么做?
我想出的最好的是以下内容:
var fn = eval("var f = function(){ return "+fnStr+";}; f() ;") ;
这似乎可以解决问题,即使它使用了 dreaded eval()
,并且使用了一个稍微复杂的论点。我能做得更好吗?即要么不使用eval()
,要么提供一个更简单的参数?