Falsy
A falsy (sometimes written falsey) value is a value that is considered false when encountered in a Boolean context.
JavaScript uses type conversion to coerce any value to a Boolean in contexts that require it, such as conditionals and loops.
The following table provides a complete list of JavaScript falsy values:
| Value | Type | Description | 
|---|---|---|
| null | Null | The keyword null— the absence of any value. | 
| undefined | Undefined | undefined— the primitive value. | 
| false | Boolean | The keyword false. | 
| NaN | Number | NaN— not a number. | 
| 0 | Number | The Numberzero, also including0.0,0x0, etc. | 
| -0 | Number | The Numbernegative zero, also including-0.0,-0x0, etc. | 
| 0n | BigInt | The BigIntzero, also including0x0n, etc. Note that there is noBigIntnegative zero — the negation of0nis0n. | 
| "" | String | Empty string value, also including ''and``. | 
| document.all | Object | The only falsy object in JavaScript is the built-in document.all. | 
The values null and undefined are also nullish.
Examples
Examples of falsy values in JavaScript (which are coerced to false in Boolean contexts, and thus bypass the if block):
js
if (false) {
  // Not reachable
}
if (null) {
  // Not reachable
}
if (undefined) {
  // Not reachable
}
if (0) {
  // Not reachable
}
if (-0) {
  // Not reachable
}
if (0n) {
  // Not reachable
}
if (NaN) {
  // Not reachable
}
if ("") {
  // Not reachable
}
The logical AND operator, &&
If the first object is falsy, it returns that object:
js
console.log(false && "dog");
// ↪ false
console.log(0 && "dog");
// ↪ 0