同时为空或同时不为空判断

javascript开发中我们经常为碰见这样的需求:

str1str2要么同时为空,要么同时不为空

针对这样的需求,一般常见的做法如下:

// StringUtil.isEmpty(obj) 是判断obj是否为空的函数
if ((StringUtil.isEmpty(str1) && StringUtil.isEmpty(str2)) 
        || (!StringUtil.isEmpty(str1) && !StringUtil.isEmpty(str2))) {
        // do something
}

对于上述代码,能很好的满足需求,然而总感觉有点繁琐。为了追求代码简洁点,因而可借用位运算^来实现上述需求。
不过在这之前,我们先了解下什么是异或运算符 (^):

如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0,即:
1^0 = 1 , 1^1 = 0 , 0^1 = 1 , 0^0 = 0

所以优化后的代码如下:

if (!(StringUtil.isEmpty(str1) ^ StringUtil.isEmpty(str2))) {
        // do something
}

你可能感兴趣的:(同时为空或同时不为空判断)