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来回答问题和警告不要使用答案