Reputation: 13524
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.
Upvotes: 54
Views: 176396
Reputation: 6482
Try like Below
var Boolify = require('node-boolify').Boolify;
if (!Boolify(val)) {
//your instruction
}
Refer node-boolify
Upvotes: -1
Reputation: 23173
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 ""
}
Upvotes: 20
Reputation: 490
Using ? is much cleaner.
var ? function_if_exists() : function_if_doesnt_exist();
Upvotes: 0
Reputation: 57
Boolean(val) === false. This worked for me to check if value was falsely.
Upvotes: 1
Reputation: 2944
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... }
Upvotes: 3
Reputation: 199
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.
Upvotes: 19
Reputation: 43956
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.
Upvotes: 2
Reputation: 69924
Well, you can always "give up" :)
function b(val){
return (val==null || val===false);
}
Upvotes: 41
Reputation: 78520
only shortcut for something like this that I know of is
var val;
(val==null || val===false) ? false: true;
Upvotes: 1