Reputation: 5907
I have a variable. Let's call it toto
.
This toto
can be set to undefined
, null
, a string, or an object.
I would like to check if toto
is set to a data, which means set to a string or an object, and neither undefined
nor null
, and set corresponding boolean value in another variable.
I thought of the syntax !!
, that would look like this:
var tata = !!toto; // tata would be set to true or false, whatever toto is.
The first !
would be set to false
if toto is undefined
or null
and true
else, and the second one would invert it.
But it looks a little bit odd. So is there a clearer way to do this?
I already looked at this question, but I want to set a value in a variable, not just check it in an if
statement.
Upvotes: 139
Views: 112999
Reputation: 8243
!!o
is a shorthand of Boolean(o)
and works exactly the same.
(for converting truthy/falsy
to true/false
).
let o = {a: 1}
Boolean(o) // true
!!o // true
// !!o is shorthand of Boolean(o) for converting `truthy/falsy` to `true/false`
Note that
Upvotes: 6
Reputation: 22673
Yes, you can always use this:
var tata = Boolean(toto);
And here are some tests:
for (var value of [0, 1, -1, "0", "1", "cat", true, false, undefined, null]) {
console.log(`Boolean(${typeof value} ${value}) is ${Boolean(value)}`);
}
Results:
Boolean(number 0) is false
Boolean(number 1) is true
Boolean(number -1) is true
Boolean(string 0) is true
Boolean(string 1) is true
Boolean(string cat) is true
Boolean(boolean true) is true
Boolean(boolean false) is false
Boolean(undefined undefined) is false
Boolean(object null) is false
Upvotes: 203