JavaScript check if value is only undefined, null or false

JavascriptNullUndefined

Javascript Problem Overview


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.

Javascript Solutions


Solution 1 - Javascript

Well, you can always "give up" :)

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

Solution 2 - Javascript

The best way to do it I think is:

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

This will be true if val is false, NaN, or undefined.

Solution 3 - Javascript

I think what you're looking for is !!val==false which can be turned to !val (even shorter):

You see:

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

That works by flipping the value by using the ! operator.

If you flip null once for example like so :

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

If you flip it twice like so :

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

Same with undefined or false.

Your code:

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

would then become:

if(!val) {
  ;
}

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:

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

Solution 4 - Javascript

One way to do it is like that:

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

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

I think it minimizes the number of operations given your restrictions making the check fast.

Solution 5 - Javascript

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

> If value is omitted or is 0, -0, null, false, NaN, undefined, or the empty string (""), the object has an initial value of false.

So

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

Solution 6 - Javascript

only shortcut for something like this that I know of is

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

Solution 7 - Javascript

Boolean(val) === false. This worked for me to check if value was falsely.

Solution 8 - Javascript

Using ? is much cleaner.

var ? function_if_exists() : function_if_doesnt_exist();

Solution 9 - Javascript

Try like Below

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

Refer node-boolify

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionLimeView Question on Stackoverflow
Solution 1 - JavascripthugomgView Answer on Stackoverflow
Solution 2 - JavascriptDavid HoffmanView Answer on Stackoverflow
Solution 3 - JavascriptSudoPlzView Answer on Stackoverflow
Solution 4 - JavascriptEugene LazutkinView Answer on Stackoverflow
Solution 5 - JavascriptYidingView Answer on Stackoverflow
Solution 6 - JavascriptJoseph MarikleView Answer on Stackoverflow
Solution 7 - JavascriptBrigetteView Answer on Stackoverflow
Solution 8 - JavascriptPedro PereiraView Answer on Stackoverflow
Solution 9 - JavascriptRatan Uday KumarView Answer on Stackoverflow