动态构造if语句在一个字符串变量中

时间:2017-11-28 20:32:21

标签: javascript if-statement

我对问题感到困惑,我确信我对此过于复杂,但总结一下,我的问题是:

// imagine this variable is dynamically filled by a loop with conditions inside
var condition = varA + " == " + varB + " && " + varC + " == " + varD;

if (condition) {
    // something
}

所以它不会检查varA是否等于varBvarC等于varD是否符合我的意图,而是只是将其视为一个字符串,无论如何,似乎总是如此。我不想要,我希望看到它实际检查varA是否等于varB等。

有没有办法将此statement解析为实际上可以成为合法的'如果条件?

谢谢!

3 个答案:

答案 0 :(得分:1)

为什么不做呢

if(varA  ==  varB  &&  varC ==varD){
//do something
}

修改

也许尝试使用safe-eval。它是第三方软件包,但是对于eval会有所改进。

答案 1 :(得分:1)

我想我明白你想做什么。您试图查看一些比较,并最终确定所有比较是否真实。

在这种情况下,您实际上可以按照以下方式继续构建您的条件:

var a = 1, b = 1, c = 3, d = 3, e = 5, f = 6; 
var condition = a === b; // condition is true
condition = condition && c === d; // condition is still true
condition = condition && e === f; // condition is now and forever false

答案 2 :(得分:0)

条件变量的问题在于它不检查变量之间的相等性。整个条件变量被读作字符串,因为它看到==和&&作为字符串并最终将它们连接在一起。

我建议像这样编写if语句:

if (varA === varB && varB === varC && varC === varD) {
  // do something
}

这样,你检查varA是否等于varB,varB等于varC等。使用三等于也确保变量属于类型值类型(即字符串,布尔值,数字)。希望这会有所帮助。