我需要"解析" /从字符串创建JS函数。让我们说:
var str = "function(data,type,full,meta){ return'works';}";
我尝试使用javascript eval(str)函数,但在尝试此操作时我始终从控制台收到此错误
eval(str)
Uncaught SyntaxError:意外的令牌(
VM:2323:1
我没有看到语法有任何问题。
答案 0 :(得分:4)
那是因为没有什么能迫使它被解析为函数表达式,所以它被解析为函数声明。
函数声明需要一个名称。来自Function Definition,
FunctionDeclaration : function Identifier ( FormalParameterListopt ) { FunctionBody } FunctionExpression : function Identifieropt ( FormalParameterListopt ) { FunctionBody }
一个简单的修复(如果你确定字符串有正确的语法)将它包装在括号中。然后它将被解析为函数表达式。
eval('(' + str + ')')