Javascript 如何在IF语句中使用字符串中的条件
我有以下情况:Javascript 如何在IF语句中使用字符串中的条件,javascript,string,boolean,eval,conditional-statements,Javascript,String,Boolean,Eval,Conditional Statements,我有以下情况: var answer = 'three'; var isClosed = true; var condition = "answer != null && !isClosed"; 条件是一个文本字符串,由用户动态设置。一旦他们设置了条件,我需要在IF/ELSE语句中对其进行评估: if(condition) //Do something else //Do something 不使用“eval()”我可以这样做吗?怎么用?我想避免它: if(eva
var answer = 'three';
var isClosed = true;
var condition = "answer != null && !isClosed";
条件是一个文本字符串,由用户动态设置。一旦他们设置了条件,我需要在IF/ELSE语句中对其进行评估:
if(condition)
//Do something
else
//Do something
不使用“eval()”我可以这样做吗?怎么用?我想避免它:
if(eval(condition))
...
注:这是一个简单的例子,实际情况有点复杂,动态条件:)有点混乱。。
但是如果答案
和被用户关闭
。。这样就足够了
answer = null
isClosed = false // the default value for isClosed
if(answer != null && !isClosed){
//Do something
}
else{
//Do something
}
如果您想不惜一切代价逃避
eval
(因为出于安全原因,这可能非常危险),您基本上需要一个适应您从数据库获得的dsl
的规则引擎
我在谷歌上搜索了这一个,它看起来很不错,实际上没有试过,但现在你知道从哪里开始了。为什么不直接执行“var condition=answer!=null&&&!isClosed;”?@Mironor不完全正确,技术人员用户将这些条件作为字符串加载到数据库中。条件可能取决于在另一个表中定义并经常更新的不同变量。您不能有一个从不同变量到所需条件的函数吗?因此无法单独提取answer和isClosed?我希望可以,但它比这个例子更复杂,我无法改变这个疯狂的要求…嗯,在这种情况下,你已经得到了答案,'eval()'是正确的选择。。但是仍然不是最好的方法,因为'eval()'只是增加了函数的运行时复杂性。谢谢,我来看看!那个么,那个引擎能适应你们的问题吗?