Javascript “我该怎么做?”;“评估”;在包含函数的字符串上

Javascript “我该怎么做?”;“评估”;在包含函数的字符串上,javascript,eval,Javascript,Eval,在下面的示例中,我希望b和c=eval(a)包含相同的函数,一个总是返回true的函数。但是,a不会被计算,而是抛出一个语法错误: 未捕获语法错误:函数语句需要函数名。但是,如果命名函数,c包含未定义的 var a = "function() { return true }"; var b = function() { return true }; var c = eval(a); console.log(b,c); 问题在于,您输入到eval的代码将在需要语句的地方进行求值,但在var

在下面的示例中,我希望
b
c=eval(a)
包含相同的函数,一个总是返回true的函数。但是,
a
不会被计算,而是抛出一个语法错误:
未捕获语法错误:函数语句需要函数名
。但是,如果命名函数,
c
包含
未定义的

var a = "function() { return true }";

var b = function() { return true };

var c = eval(a);

console.log(b,c);

问题在于,您输入到
eval
的代码将在需要语句的地方进行求值,但在
var b=
之后的代码将作为表达式进行求值。当解析器需要一条语句时,
function
关键字启动一个函数声明,该声明需要一个名称。但是在需要表达式的地方,
function
关键字会启动一个函数表达式,其中名称是可选的

要使您的
eval
处理表达式,请使用
环绕代码:

var a=“function(){return true}”;
var b=函数(){return true};
var c=评估(“(“+a+”);
// −−−−−−−−−−^^^^^−−−^^^^^

控制台日志(b,c)谢谢-在这种情况下,邪恶评估是一种遗产,我对此无能为力。