假设我有一个如下所示的 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()
,要么提供一个更简单的参数?
原文由 brainjam 发布,翻译遵循 CC BY-SA 4.0 许可协议
还有 Function 对象。