我正在寻找检查,如果我的变量是以下之一:
null || undefined || empty string || false
现在它看起来凌乱而漫长:
const userHasPhoneNumber = user.phone === undefined ||
user.phone === "" ||
user.phone === false ||
user.phone === null ? false : true;
有近路吗?
3条答案
按热度按时间55ooxyrt1#
使用JavaScript的
!!
,对于null
,""
,undefined
和false
,将变为false
:注意请谨慎使用,因为某些结果可能与预期不同,this answer显示完整列表。
liwlm1x92#
你可以快捷方式
x === undefined || x === null
到x == null
。对于其他的,没有快捷方式,因为也有一些错误的数字值。但是你可以这样做dgsult0t3#
如果你把这个字符串强制转换成布尔值,那么它应该检查你所有的条件,这基本上就是检查
user.phone
是否为真。这取决于你想如何使用它。如果你想在条件中使用它,例如
if(userHasPhoneNumber) ...
,那么你可以直接使用字符串:if(user.phone)
,因为它将强制转换为布尔值。如果你真的需要一个布尔变量,那么需要显式地将其转换为布尔值:
通过
const userHasPhoneNumber = Boolean(user.phone);
或const userHasPhoneNumber = !!user.phone;
请注意,正如@Bergi评论的那样,有更多的值被强制转换为false值(假值),例如
NaN
或数字0
(字符串“0”将强制为true),因此这取决于输入的内容。如果它不是数字,而是字符串/boolean/null
/undefined
,应该没问题。下面是所有falsy值的列表以供参考:https://developer.mozilla.org/en-US/docs/Glossary/Falsy