Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在IF语句中使用字符串中的条件_Javascript_String_Boolean_Eval_Conditional Statements - Fatal编程技术网

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()'只是增加了函数的运行时复杂性。谢谢,我来看看!那个么,那个引擎能适应你们的问题吗?