给定一个描述 Javascript 函数的字符串,将其转换为 Javascript 函数

新手上路,请多包涵

假设我有一个如下所示的 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 许可协议

阅读 239
2 个回答

还有 Function 对象。

 var adder = new Function("a", "b", "return a + b");

原文由 goat 发布,翻译遵循 CC BY-SA 3.0 许可协议

你可以这样做:

 //in your case: eval("var fn = " + fnStr);
eval("var fn = function(){ blah1;blah2;blah3; }");
fn();

不确定如何让它变得更简单,有时没有(更好的)解决方法 eval() 。这是 实际操作的一个简单示例

原文由 Nick Craver 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题