Javascript 复杂的IF语句问题
在Javascript 复杂的IF语句问题,javascript,node.js,if-statement,conditional,Javascript,Node.js,If Statement,Conditional,在if语句中有一个复杂的条件,不知怎的,它不能解决我想要的问题 if ( (statementA1) || (statementA2) && (statementB) && (statementC) ) { doSomething } A1和A2不能同时为真(因为实际语句的性质)。 此外,B和C都必须计算true,才能得出总体true。 因此,只有对于true-false-true和false-true-true才应返回t
if
语句中有一个复杂的条件,不知怎的,它不能解决我想要的问题
if (
(statementA1) ||
(statementA2) &&
(statementB) &&
(statementC)
) {
doSomething
}
A1
和A2
不能同时为真(因为实际语句的性质)。
此外,B
和C
都必须计算true,才能得出总体true。
因此,只有对于true-false-true
和false-true-true
才应返回true
;任何其他排列都应返回false
由于语句的内部复杂性,Math.abs()
,A1
和B
都有内部的组合子语句,因此这些语句都用大括号括起来
a1
或a2
和b
和c
if ((statementA1 || statementA2) && statementB && statementC) {
// doSomething
}
由于(6)与(5)之间的of,因此需要使用括号
如果你有这个案子
分别检查a1
和a2
if ((!statementA1 && statementA2 || statementA1 && !statementA2) && statementB && statementC) {
// doSomething
}
为了
a1
或a2
和b
和c
if ((statementA1 || statementA2) && statementB && statementC) {
// doSomething
}
由于(6)与(5)之间的of,因此需要使用括号
如果你有这个案子
分别检查a1
和a2
if ((!statementA1 && statementA2 || statementA1 && !statementA2) && statementB && statementC) {
// doSomething
}
还记得首字母缩略词“请原谅我亲爱的萨莉阿姨”或PEMDAS吗?它指的是括号、幂、乘/除和加/减。在许多语言中,这是从高(紧)到低(松)的优先顺序,包括JavaScript
一个变体是“请原谅我的姑妈”(佩玛)
然后记住,在逻辑世界中,和
有点像乘法,或
有点像加法。这样,您就可以记住and(&&
)比or(|
)绑定得更紧
因此,如果要将和
两个条件放在一起,其中一个条件本身就是或
两个条件,则必须将后者括起来:
a && (b || c)
如果没有帕伦夫妇,这将被解释为
(a && b) || c
当然,在您的特定情况下,您可以通过简单地编写来避免担心优先级和括号
a1 != a2 && b && c
还记得首字母缩略词“请原谅我亲爱的萨莉阿姨”或PEMDAS吗?它指的是括号、幂、乘/除和加/减。在许多语言中,这是从高(紧)到低(松)的优先顺序,包括JavaScript
一个变体是“请原谅我的姑妈”(佩玛)
然后记住,在逻辑世界中,和
有点像乘法,或
有点像加法。这样,您就可以记住and(&&
)比or(|
)绑定得更紧
因此,如果要将和
两个条件放在一起,其中一个条件本身就是或
两个条件,则必须将后者括起来:
a && (b || c)
如果没有帕伦夫妇,这将被解释为
(a && b) || c
当然,在您的特定情况下,您可以通过简单地编写来避免担心优先级和括号
a1 != a2 && b && c
如果运算符优先级对您来说比较困难,则始终可以将一个If块拆分为多个嵌套块。但是,是的,逻辑性和比OR有更高的优先级。
a | | b&c
解析为a | |(b&c)
。这并不太复杂,我只是太专注于这个问题(本周重写了3次相同的feauter),现在我没有时间来讨论它。它本身很恶心,里面没有任何东西。为什么不简单地阅读呢?顺便说一句,当你说,*两个A1
和A1
不能同时为真“,我想你的意思是,如果条件成立,就永远不会为真,也不一定为真,对吧?换句话说,你是说true
永远不会发生,还是说它可能发生,如果是,应该返回false(或true)?如果运算符优先级对您来说很困难,您可以将一个If块拆分为多个嵌套。但是,是的,逻辑和优先级高于OR。a | | b&c
解析为a | |(b&c)
。这并不太复杂,我只是太关注这个问题(本周将同一个feauter重写了3次)现在我没有人和我讨论这个问题。它本身就很恶心,没有在里面嵌套任何东西。为什么不简单地读一下呢?顺便说一下,当你说,*两个A1
和A1
不能同时是真的“,我想你的意思是永远不会是,也不一定不会是这样,对吧?换句话说,你是说true
永远不会发生,还是说它可能会发生,如果是这样,应该返回false(或true)?A1部分和A2完全引用同一个对象属性,其中包含一个字符串,该字符串是后面的逻辑。然而,我用尼娜的解决方案进行了测试,它给了我正确的结果。我希望在这里说谢谢不会有问题。A1部分和A2完全指的是同一个对象属性,其中包含一个字符串,这就是后面的逻辑。然而,我用尼娜的解决方案进行了测试,它给了我正确的结果。我希望在这里说谢谢不会有问题。