Which Values Are Considered Falsy in JavaScript?

In JavaScript, the following values are considered falsy:

  • Boolean false;
  • Numbers 0, 0.0 and 0x0 (including their negative counterparts — i.e. -0, -0.0 and -0x0);
  • NaN;
  • BigInt 0n (or 0x0n);
  • Empty String (i.e. '', "" and ``);
  • null
  • undefined;
  • Objects with the [[IsHTMLDDA]] internal slot (which only exists in document.all and cannot be set using JavaScript).

These values evaluate to a boolean false when:

  1. They're explicitly converted to a boolean (for example by using double negation !! or the Boolean object wrapper);
  2. 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.