【问题标题】:How to user a condition in a String inside an IF sentence如何在 IF 语句中的字符串中使用条件
【发布时间】:2014-11-04 16:28:31
【问题描述】:

我有以下情况:

var answer = 'three';
var isClosed = true;
var condition = "answer != null && !isClosed";

条件是文字字符串,由用户动态设置。一旦他们设置了条件,我需要在 IF/ELSE 语句中对其进行评估:

if(condition)
   //Do something
else
   //Do something

我可以不使用“eval()”来做到这一点吗?如何?我想避免它:

if(eval(condition))
...

注意:这是一个简单的例子,实际情况有点复杂,动态条件:)

【问题讨论】:

  • 为什么不直接做“var condition = answer != null && !isClosed;” ?
  • @Mironor 不完全是,技术用户将条件作为字符串加载到数据库中。条件可能取决于在另一个表上定义并经常更新的不同变量。
  • 难道你不能有一个函数可以从不同的变量到你想要的条件吗?
  • 那么 answer 和 isClosed 不能单独提取?

标签: javascript string boolean eval conditional-statements


【解决方案1】:

如果您想不惜一切代价逃避eval(因为出于安全原因,这可能非常危险),您基本上需要一个适合您从数据库中获取的dslrules engine

我用谷歌搜索了这个,它看起来很不错 C2FO ,实际上并没有尝试过,但现在你知道从哪里开始了。

【讨论】:

  • 谢谢,我去看看!
  • 那么,这个引擎能适应你的问题吗?
【解决方案2】:

有点迷茫。。 但是如果answerisClosed 由用户设置.. 那么这样就足够了..

answer = null
isClosed = false // the default value for isClosed
if(answer != null && !isClosed){
  //Do something
}
else{
   //Do something
}

【讨论】:

  • 我希望可以,但它比示例更复杂,我无法更改这个疯狂的要求...
  • 嗯,在那种情况下,你已经得到了答案,'eval()' 是要走的路。但仍然不是最好的方法,因为 'eval()' 只是增加了运行时函数的复杂度
猜你喜欢
  • 2021-03-23
  • 2013-04-29
  • 2014-08-05
  • 2014-06-18
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2014-04-12
  • 2014-03-02
相关资源
最近更新 更多