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)代码>谢谢-在这种情况下,邪恶评估是一种遗产,我对此无能为力。