这段代码总是返回错误:
eval('if(!var_a){return 0;}');
像这样的语句非常好:
eval('alert(1)');
像eval('return 0')
这样的JavaScript语句,当它的目的是让脚本停止进一步执行时,总是会给出一个错误。
eval
只是在某些代码块中运行时产生不必要的错误,并且其中有返回语句。
这是因为您在函数的上下文中使用了return。将代码封装在函数中,返回就可以了。有几种方法可以做到这一点。我建议你不要使用它们中的任何一个。相反,找到一种避免eval的方法。无论如何,这里有一些解决方案:
eval('(function() { if(!var_a){return 0;} })()');
或
new Function('if(!var_a){return 0;}')()
您只能从函数内return
。像这样:
function foo() {
if (x) alert("woo");
else return 0;
doMoreStuff();
}
你不是在一个函数中,所以没有什么可以返回的。另外,你为什么要使用eval
呢?
在第一种情况下,您试图执行具有return
的表达式。在第二种情况下,您正在调用返回值的函数。要做你想做的,你可以在表达式中声明和调用一个匿名函数,如下所示…
eval('(function(){ if(!var_a){return 0;} })()');
当然,如果问题只是如何构造包含条件的可求值表达式,则可以使用"三元"操作符…
eval('var_a ? nil : 0');