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

时间:2011-07-26 21:31:21

标签: javascript null undefined

除了创建一个函数之外,还有一种更短的方法来检查一个值是undefinednull还是false只在JavaScript中?

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

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

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

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

9 个答案:

答案 0 :(得分:32)

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

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

答案 1 :(得分:12)

我认为最好的方法是:

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

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

答案 2 :(得分:3)

我认为您正在寻找的是 !!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 ""
}

答案 3 :(得分:2)

一种方法就是这样:

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

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

我认为,鉴于您的限制快速检查,它可以最大限度地减少操作次数。

答案 4 :(得分:1)

我所知道的只有

这样的东西的快捷方式
var val;
(val==null || val===false) ? false: true;

答案 5 :(得分:1)

另一种解决方案:

基于该文档,如果值不是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...
}

答案 6 :(得分:0)

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

答案 7 :(得分:0)

使用?更干净。

var ? function_if_exists() : function_if_doesnt_exist();

答案 8 :(得分:0)

尝试如下

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

引用node-boolify