在javascript
开发中我们经常为碰见这样的需求:
str1
和str2
要么同时为空,要么同时不为空
针对这样的需求,一般常见的做法如下:
// 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
}
网友评论