我有两个字符串存储在ab中。如果两个字符串都具有某些值,我想进行一些验证。为此,我使用:

if(a && b) {
    //Do some processing.
}

但是,如果其中一个是空的,而另一个不是空的,那么我需要将其分开对待。如果两者都为空,则无需执行任何操作。因此,基本上处理这种情况是XNOR的错误情况。
我可以这样:
if((a && !b) || (!a && b)) {
    //handle separately.
}

有没有比这更好的方法了?

最佳答案

让我们将两个单独的if语句合并为一个(实际上是相同的,但将有助于简化):

if (a && b)
    // do some processing
else if (a && !b || !a && b)
    // do other processing

为了弄清楚是否可以进一步简化,让我们看一下第二个条件的真值表:
a  |  b  |  x
--------------
1  |  0  |  1  (a && !b)
0  |  1  |  1  (!a && b)
0  |  0  |  0  (a && b) (negating the first if)

您可以看到,当x为true或a为true时,出现了积极的结果(b = 1),这简化为a || b。 if语句的最终版本如下所示:
if (a && b)
    // do some processing
else if (a || b)
    // do other processing

关于javascript - 在JavaScript中执行xnor,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47893479/

10-09 12:49