Understanding JavaScript Truthy and Falsy
Can someone please explain JavaScript Truthy and Falsy, using the below sample data. I have read other threads but still confused.
var a = 0;
var a = 10 == 5;
var a = 1;
var a = -1;
From my understanding, I believe that var a = 1;
is the only truthy and the rest are falsy - is this correct?
Solution 1:
From my understanding, I believe that var a = 1; is the only truthy and the rest are falsy’s - is this correct?
No.
-
var a = 0;
Number zero is falsy. However, note that the string zero
"0"
is truthy. -
var a = 10 == 5;
This is same as
var a = (10 == 5);
, so this is falsy. -
var a = 1;
var a = -1;
Any non-zero number including negative numbers is truthy.
Quoting from MDN
In JavaScript, a truthy value is a value that translates to true when evaluated in a Boolean context. All values are truthy unless they are defined as falsy (i.e., except for
false
,0
,""
,null
,undefined
, andNaN
).
List of falsy values in JavaScript:From MDN
false
null
undefined
0
NaN
-
''
,""
,``
(Empty template string) document.all
-
0n
: BigInt -
-0
Solution 2:
There's a simple way to check, which you can use now and forever:
function truthyOrFalsy(a) {
return a ? "truthy" : "falsy";
}
To wit:
> truthyOrFalsy(0)
"falsy"
> truthyOrFalsy(10 == 5)
"falsy"
> truthyOrFalsy(1)
"truthy"
> truthyOrFalsy(-1)
"truthy"
Also see a list of all falsey values in JavaScript.