我对问题感到困惑,我确信我对此过于复杂,但总结一下,我的问题是:
// imagine this variable is dynamically filled by a loop with conditions inside
var condition = varA + " == " + varB + " && " + varC + " == " + varD;
if (condition) {
// something
}
所以它不会检查varA
是否等于varB
而varC
等于varD
是否符合我的意图,而是只是将其视为一个字符串,无论如何,似乎总是如此。我不想要,我希望看到它实际检查varA
是否等于varB
等。
有没有办法将此statement
解析为实际上可以成为合法的'如果条件?
谢谢!
答案 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等。使用三等于也确保变量属于类型值类型(即字符串,布尔值,数字)。希望这会有所帮助。