【问题标题】:eval always returns error when executing a function having a return statement执行具有 return 语句的函数时,eval 总是返回错误
【发布时间】:2012-01-01 02:42:00
【问题描述】:

这段代码总是返回错误:

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

这样的陈述非常有效:

eval('alert(1)');

eval('return 0') 之类的 JavaScript 语句在其意图是使脚本停止进一步执行时总是会出错。

eval 在某些代码块中运行并且其中包含返回语句时只会给出不需要的错误。

【问题讨论】:

  • 简单的解决方法是停止使用eval()。

标签: javascript eval


【解决方案1】:

这是因为您在函数上下文之外使用了 return。将您的代码包装在一个函数中并返回工作正常。有几种方法可以做到这一点。 我建议您不要使用其中任何一种。而是想办法避免 eval。无论如何,这里有一些解决方案:

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

或

new Function('if(!var_a){return 0;}')()

【讨论】:

  • +1 用于回答问题和警告不要使用答案
【解决方案2】:

您只能在函数内return。像这样:

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

你不在一个函数中,所以没有什么可以返回的。另外,你为什么要使用eval?

【讨论】:

    【解决方案3】:

    在第一种情况下,您尝试使用return 执行表达式。在第二种情况下,您正在调用一个返回值的函数。为了做你想做的事,你可以在表达式中声明和调用一个匿名函数,如下所示......

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

    当然,如果问题只是如何构造包含条件的可计算表达式,您可以使用“三元”运算符...

    eval('var_a ? nil : 0');
    

    【讨论】:

      猜你喜欢
      • 2021-08-15
      • 2016-06-12
      • 2014-06-25
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      • 2019-02-19
      • 1970-01-01
      • 2016-01-07
      相关资源
      最近更新 更多