繁体   English   中英

JavaScript检查值是否仅为undefined,null或false

[英]JavaScript check if value is only undefined, null or false

除了创建一个函数之外,还有一种更短的方法来检查一个值是否undefined ,仅在JavaScript中为nullfalse

下面的if语句等价于if(val===null && val===undefined val===false)代码工作正常,我正在寻找更短的等价物。

if(val==null || val===false){
  ;
}

val=undefinedval=null时, val==null以上的计算结果为true。

我在考虑使用按位运算符或其他一些技巧。

好吧,你总是可以“放弃”:)

function b(val){
    return (val==null || val===false);
}

我认为最好的方法是:

if(val != true){
//do something
} 

如果val为false,NaN或未定义,则为true。

我认为你要找的是!!val==false ,可以转向!val (甚至更短):

你看:

function checkValue(value) {
    console.log(!!value);
}

checkValue(); // false
checkValue(null); // false
checkValue(undefined); // false
checkValue(false); // false
checkValue(""); // false

checkValue(true); // true
checkValue({}); // true
checkValue("any string"); // true

这可以通过使用!来翻转价值! 运营商。

如果您翻转null一次,例如:

console.log(!null) // that would output --> true

如果你像这样翻转两次:

console.log(!!null) // that would output --> false

undefinedfalse相同。

你的代码:

if(val==null || val===false){
  ;
}

然后会成为:

if(!val) {
  ;
}

这适用于所有情况,即使有一个字符串,但它的长度为零。 现在,如果你想要它也适用于数字0(如果双重翻转会变为false )那么你的if会变成:

if(!val && val !== 0) {
  // code runs only when val == null, undefined, false, or empty string ""
}

一种方法是这样的:

var acceptable = {"undefined": 1, "boolean": 1, "object": 1};

if(!val && acceptable[typeof val]){
  // ...
}

我认为它可以最大限度地减少操作次数,因为您可以快速进行检查。

另一种方案:

根据该文档,如果值不是0,未定义,null等,则Boolean对象将返回true。https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean

如果省略value或者为0,-0,null,false,NaN,undefined或空字符串(“”),则对象的初始值为false。

所以

if(Boolean(val))
{
//executable...
}

我所知道的只是这样的捷径

var val;
(val==null || val===false) ? false: true;

布尔值(val)=== false。 这对我有用,可以检查价值是否错误。

用? 更清洁。

var ? function_if_exists() : function_if_doesnt_exist();

试试如下

var Boolify = require('node-boolify').Boolify;
if (!Boolify(val)) {
    //your instruction
}

请参阅node-boolify

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM