A JavaScript boolean represents one of two logical states: true or false. Conditional statements like if, while, and the ternary operator evaluate any value as either truthy or falsy.
Every value in JavaScript is truthy except these eight falsy values:
false (boolean false)0 and -0 (zero)0n (BigInt zero)"" (empty string)nullundefinedNaNdocument.all (legacy browser object)Notice that empty arrays [], empty objects {}, and the string "false" are all truthy!
Use Boolean(value) or !!value to coerce values explicitly, and check .length > 0 for arrays instead of if (arr).
const inputs = [0, "", "0", [], {}, null, "active"];
for (const item of inputs) {
console.log(JSON.stringify(item), "-> Boolean:", Boolean(item));
}
// Explicit checks avoid surprises with 0 or []
const itemCount = 0;
if (itemCount !== null && itemCount !== undefined) {
console.log("Valid numeric count:", itemCount);
}
if (items) to check if an array is non-empty: An empty array [] is truthy! Always write if (items.length > 0).if (userInput) when 0 is valid: If a user enters 0 for quantity, if (qty) treats 0 as falsy and skips it. Check qty !== undefined or typeof qty === "number".new Boolean(false): Wrapping a boolean in new Boolean(false) creates an object, and every object is truthy inside if (new Boolean(false))!"0" truthy while 0 is falsy?"0" is a non-empty string with length 1. Only the empty string "" is falsy among strings.
!!value do?The first ! flips the value's truthiness to a boolean, and the second ! flips it back, converting any expression into a strict true or false. It works identically to Boolean(value).
Use Object.keys(obj).length === 0, because {} itself is truthy.
Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.
Quick Access With
Experiment with the code from this lesson in our interactive playground.
You've completed this section! Take a quick 5-question quiz to check your understanding.