JavaScript 检查值是否只是未定义、null 或 false
除了创建函数之外,是否有更短的方法来仅在 JavaScript 中检查值是否为 undefined
、null
或 false
?
下面的 if 语句相当于 if(val===null && val===undefined val===false)
该代码工作正常,我正在寻找更短的等效代码。
if(val==null || val===false){
;
}
当 val=undefined
或 val=null
时,以上 val==null
的计算结果均为 true。
我在想也许使用按位运算符或其他一些技巧。
Other than creating a function, is there a shorter way to check if a value is undefined
,null
or false
only in JavaScript?
The below if statement is equivalent to if(val===null && val===undefined val===false)
The code works fine, I'm looking for a shorter equivalent.
if(val==null || val===false){
;
}
Above val==null
evaluates to true both when val=undefined
or val=null
.
I was thinking maybe using bitwise operators, or some other trickery.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
好吧,你总是可以“放弃”:)
Well, you can always "give up" :)
我认为您正在寻找的是
!!val==false
,它可以变成!val
(甚至更短):您会看到:
这是通过使用
!
运算符翻转值来实现的。例如,如果您像这样翻转
null
一次:如果您像这样翻转两次:
与
undefined
或false
相同。您的代码:
然后将变为:
即使存在字符串但其长度为零,这也适用于所有情况。
现在,如果您希望它也适用于数字 0(如果它被双重翻转,则将变为 false),那么您的 if 将变为:
I think what you're looking for is
!!val==false
which can be turned to!val
(even shorter):You see:
That works by flipping the value by using the
!
operator.If you flip
null
once for example like so :If you flip it twice like so :
Same with
undefined
orfalse
.Your code:
would then become:
That would work for all cases even when there's a string but it's length is zero.
Now if you want it to also work for the number 0 (which would become
false
if it was double flipped) then your if would become:我认为最好的方法是:
如果 val 为 false、NaN 或未定义,则为 true。
The best way to do it I think is:
This will be true if val is false, NaN, or undefined.
另一种解决方案:
根据文档,如果值不为 0、未定义、空等,Boolean 对象将返回 true。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean
所以
Another solution:
Based on the document, Boolean object will return true if the value is not 0, undefined, null, etc. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean
So
一种方法是这样的:
我认为考虑到您的限制使检查速度更快,它可以最大限度地减少操作数量。
One way to do it is like that:
I think it minimizes the number of operations given your restrictions making the check fast.
据我所知,此类事情的唯一捷径是
only shortcut for something like this that I know of is
布尔值(val)===假。这对我检查值是否错误很有用。
Boolean(val) === false. This worked for me to check if value was falsely.
使用 ?干净多了。
Using ? is much cleaner.
尝试如下
参考 node-boolify
Try like Below
Refer node-boolify