Eval在执行带有return语句的函数时总是返回错误
eval always returns error when executing a function having a return statement
这段代码总是返回错误:
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');
相关文章:
- Node.js v6.2.0类扩展不是函数错误
- Javascript搜索函数错误
- Chrome Javascript日期构造函数错误
- 浏览器中出现javascript初始大写函数错误
- Createjs冲突问题localToLocal不是函数错误
- Java脚本函数错误
- 更新带有Javascript函数错误的变量
- 如何将对象插入对象列表的开头,当它有 unshift 不是函数错误
- 在将 Pickadate 与 Meteor 一起使用时,未定义不是函数错误
- 运行咕噜咕噜咕噜抛出 _.object 不是函数错误
- 了解函数(错误、数据)回调
- javascript中的typeof()函数错误
- 我一直在获取angularjs服务不是函数错误(LoginService.login不是函数)
- HTML5拖拽&drop正在抛出undefined不是函数错误
- Google Maps API a.lat不是函数错误
- getItemAtIndex不是函数错误
- Javascript停止函数错误
- 对话框函数错误无效函数
- Javascript 自定义函数错误
- 因果报应单元测试'未定义'不是函数错误