Eval在执行带有return语句的函数时总是返回错误

eval always returns error when executing a function having a return statement

本文关键字:函数 错误 返回 语句 执行 行带 return Eval      更新时间:2023-09-26

这段代码总是返回错误:

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');