References

Beginner-friendly references for web development, with live, editable examples.

The JavaScript Boolean object

Object JavaScript All modern browsers Updated
Quick answer

A Boolean is one of two values: true or false. In conditions, every value is treated as truthy or falsy. The six falsy values are false, 0, "", null, undefined and NaN — everything else is truthy. Convert any value to a real boolean with Boolean(x) or the double-bang !!x.

Overview

The Boolean type has just two values, true and false, and it underpins every decision your code makes — if statements, loops, comparisons. The comparison and logical operators (===, >, &&, ||) produce booleans.

The concept that matters most in practice is truthy and falsy. When a non-boolean value is used where a boolean is expected — like an if condition — JavaScript coerces it. There are exactly six falsy values worth memorizing: false, 0, "" (empty string), null, undefined and NaN. Everything else is truthy — including "0", "false", [] and {}, which surprises people. That's why if (value) is a common shorthand for "value is present and non-empty".

To turn any value into an actual boolean, use Boolean(value) or the idiomatic double-NOT, !!value — both give true for truthy values and false for falsy ones. Avoid new Boolean() (the object wrapper), which is a footgun because a Boolean object is always truthy, even one wrapping false. Stick to the primitive.

Syntax

true;  false;

// the six falsy values
Boolean(false);     // false
Boolean(0);         // false
Boolean("");        // false
Boolean(null);      // false
Boolean(undefined); // false
Boolean(NaN);       // false

!!"hello";          // true  (convert with double-NOT)

Example

Live example
<pre id="out" style="font:15px ui-monospace,monospace"></pre>
<script>
  const values = [0, '', 'hi', [], null, '0'];

  const lines = values.map(v =>
    JSON.stringify(v) + ' -> ' + Boolean(v)
  );

  document.getElementById('out').textContent = lines.join('\n');
</script>

Best practices

  • Memorize the six falsy values: false, 0, "", null, undefined, NaN — everything else is truthy.
  • Convert to a real boolean with Boolean(x) or !!x.
  • Remember "0", [] and {} are all truthy.
  • Never use new Boolean() — the object wrapper is always truthy.

Frequently asked questions

What values are falsy in JavaScript?
Exactly six: false, 0, "", null, undefined and NaN. All other values are truthy.
How do I convert a value to a boolean?
Use Boolean(value) or the double-NOT idiom !!value.
Is an empty array falsy?
No. [] and {} are both truthy, even though they're "empty". Only the six specific falsy values are falsy.
Why is "false" (a string) truthy?
Because any non-empty string is truthy. Only the empty string "" is falsy, regardless of its contents.