我比较两个对象:
if (obj1 !== null && obj2 !== null) {
// do thing 1
} else if (obj1 == null && obj2 == null) {
// also do thing 1
} else if (obj1 !== null) {
// return obj1
} else {
// return obj2
}
对于两个对象所呈现的所有四个场景/它们是否存在,包含四行是非常不优雅的。是否有更清洁的方式来呈现这个?谢谢!
答案 0 :(得分:2)
这里有一个使用否定运算符将obj引用转换为布尔值的快捷方式,然后你可以只比较布尔值:
if (!obj1 == !obj2) {
// do thing 1
} else {
return obj1 || obj2;
}
说明:
当!obj1 == !obj2
和true
都是真实或虚假时, obj1
将评估为obj2
,但如果一个是truty而另一个是假的,则不会评估return obj1 || obj2
。因此,如果两者都为null,则将评估为true,如果两者都不为null,则将评估为true,但如果只有一个为null,则它将评估为false。
{{1}}将返回真正的真实(例如非空)。
答案 1 :(得分:1)
这将减少几个人员:
if ((obj1 && obj2) || (!obj1 && !obj2)) {
// do thing 1
}
else
return (obj1 || obj2);