Javascript从字符串创建函数

时间:2015-12-19 11:36:26

标签: javascript function eval

我需要"解析" /从字符串创建JS函数。让我们说:

var str = "function(data,type,full,meta){ return'works';}";

我尝试使用javascript eval(str)函数,但在尝试此操作时我始终从控制台收到此错误

eval(str)

Uncaught SyntaxError:意外的令牌(

VM:2323:1

我没有看到语法有任何问题。

1 个答案:

答案 0 :(得分:4)

那是因为没有什么能迫使它被解析为函数表达式,所以它被解析为函数声明。

函数声明需要一个名称。来自Function Definition

FunctionDeclaration :
  function Identifier ( FormalParameterListopt ) { FunctionBody }

FunctionExpression :
  function Identifieropt ( FormalParameterListopt ) { FunctionBody }

一个简单的修复(如果你确定字符串有正确的语法)将它包装在括号中。然后它将被解析为函数表达式。

eval('(' + str + ')')