Javascript 执行具有return语句的函数时,eval始终返回错误

Javascript 执行具有return语句的函数时,eval始终返回错误,javascript,eval,Javascript,Eval,此代码块始终返回错误: eval('if(!var_a){return 0;}'); 像这样的陈述非常有效: eval('alert(1)'); 当JavaScript语句(如eval('return 0')的意图是使脚本停止进一步执行时,它总是给出一个错误 eval在某个代码块中运行时,如果返回语句在其中,则只会给出不需要的错误。您只能从函数中返回。像这样: function foo() { if (x) alert("woo"); else return 0; d

此代码块始终返回错误:

eval('if(!var_a){return 0;}');
像这样的陈述非常有效:

eval('alert(1)');
当JavaScript语句(如
eval('return 0')
的意图是使脚本停止进一步执行时,它总是给出一个错误


eval
在某个代码块中运行时,如果返回语句在其中,则只会给出不需要的错误。

您只能从函数中返回
。像这样:

function foo() {
    if (x) alert("woo");
    else return 0;
    doMoreStuff();
 }

您不在函数中,因此没有可返回的内容。另外,为什么要使用
eval
呢?

在第一种情况下,您试图执行返回值为
的表达式。在第二种情况下,您正在调用一个返回值的函数。要执行所需操作,可以在表达式中声明和调用匿名函数,如下所示

eval('(function(){ if(!var_a){return 0;} })()');
当然,如果问题只是如何构造包含条件的可计算表达式,您可以使用“三元”运算符

eval('var_a ? nil : 0');

这是因为您在函数的上下文之外使用return。将代码封装在函数中,返回就可以了。有几种方法可以做到这一点我建议您不要使用任何一种。相反,找到一种避免评估的方法。无论如何,以下是一些解决方案:

eval('(function(){if(!var_a){return 0;}}})(')


新函数('if(!var_a){return 0;}')()

简单的解决方案是停止使用
eval()
+1来回答问题和警告不要使用答案