JavaScript: converting values to boolean or what is false and what is true
What will !x
return? And !!x
? It depends on what is x
…
!x
will convert any value to a boolean, and !!x
will negate the previous value. When x
is a boolean, !x
is its negation and !!x
is back the original value x
. But for other types, some magic happens thanks to auto conversion.
What exactly? I’ll explain in several cases. JavaScript recognizes 7 primitive data types, of which the most prominent ones are:
Primitive data types
Boolean type. It stores either true
or false
and it’s easy to guess what will the negation !x
do.
Number type. It stores an integer or floating point number. 0
is converted to false
and anything else is converted to true
.
Note: I'll soon be sharing short, practical tips on Angular — a good way to pick up something new if you're interested.
String type. It stores a sequence of characters. An empty string is converted to false
and anything else (including " "
) is converted to true
.
Special types. There are two special types: null
and undefined
. Both are treated as false
.
Summary
You can find the summary in the following reference table:
x (value) | !x | !!x |
SPECIAL | ||
undefined | TRUE | FALSE |
null | TRUE | FALSE |
NUMBER | ||
0 | TRUE | FALSE |
1 | FALSE | TRUE |
STRING | ||
“” | TRUE | FALSE |
“a” | FALSE | TRUE |
BOOLEAN | ||
false | TRUE | FALSE |
true | FALSE | TRUE |