In JavaScript, the following values are considered falsy:
- Boolean
false; - Numbers
0,0.0and0x0(including their negative counterparts — i.e.-0,-0.0and-0x0); NaN;BigInt0n(or0x0n);- Empty String (i.e.
'',""and``); nullundefined;- Objects with the
[[IsHTMLDDA]]internal slot (which only exists indocument.alland cannot be set using JavaScript).
These values evaluate to a boolean false when:
- They're explicitly converted to a boolean (for example by using double negation
!!or theBooleanobject wrapper); - Certain contexts require type conversion to boolean (such as in conditionals and loops) — in which case the value is coerced to a boolean implicitly/automatically.
Consider for example, the following (where the falsy values are coerced to boolean false inside the if block):
// boolean if (false)
// number if (0) if (0.0) if (0x0) if (-0) if (-0.0) if (-0x0) if (NaN)
// BigInt if (0n) if (0x0n)
// string
if ('')
if ("")
if (``)
// nullish value if (null) if (undefined)
// object if (document.all)
This post was published by Daniyal Hamid. Daniyal currently works as the Head of Engineering in Germany and has 20+ years of experience in software engineering, design and marketing. Please show your love and support by sharing this post.