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

Lim*_*ime 40 javascript null undefined

除了创建一个功能,有检查的值是一个较短的方式undefined,null或者false只在JavaScript?

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

if(val==null || val===false){
  ;
}
Run Code Online (Sandbox Code Playgroud)

val==nullval=undefined或时,以上评估为真val=null.

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

hug*_*omg 33

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

function b(val){
    return (val==null || val===false);
}
Run Code Online (Sandbox Code Playgroud)

  • 好吧,我偷偷地放弃了,但最终将`false`改为`!1` (3认同)

小智 13

我认为最好的方法是:

if(val != true){
//do something
} 
Run Code Online (Sandbox Code Playgroud)

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

  • 或者只是(!val) (2认同)

Sud*_*Plz 9

我认为您正在寻找的是!!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
Run Code Online (Sandbox Code Playgroud)

这可以通过使用!运算符翻转值来实现。

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

console.log(!null) // that would output --> true
Run Code Online (Sandbox Code Playgroud)

如果您将其翻转两次,如下所示:

console.log(!!null) // that would output --> false
Run Code Online (Sandbox Code Playgroud)

undefined或相同false

您的代码:

if(val==null || val===false){
  ;
}
Run Code Online (Sandbox Code Playgroud)

然后将变为:

if(!val) {
  ;
}
Run Code Online (Sandbox Code Playgroud)

即使有字符串但长度为零,这也适用于所有情况。现在,如果您希望它也适用于数字0(false如果将其两次翻转将变为数字),则您的if将变为:

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