Syntax
a && b, a || b, !a, a ?? bExamples
AND, OR, and NOT
Basic logical operator behavior, including short-circuiting.
console.log(true && false); // false
console.log(true || false); // true
console.log(!true); // false
// Short-circuit evaluation for default values
const name = "" || "Guest";
console.log(name); // "Guest" - "" is falsy
// && for conditional execution
const isLoggedIn = true;
isLoggedIn && console.log("Welcome back!");Nullish Coalescing vs OR
Why ?? is often safer than || for default values.
const count = 0;
console.log(count || 10); // 10 - 0 is falsy, so || moves on
console.log(count ?? 10); // 0 - 0 is not null/undefined, so ?? keeps it
const config = { retries: 0 };
const retries = config.retries ?? 3; // correctly keeps 0, not 3Best practices
- Use ?? instead of || when 0, "", or false should be treated as valid values rather than replaced with a default
- Take advantage of && for concise conditional execution, but avoid it when the intent would be clearer as a full if statement
- Remember that && and || return one of their operand values, not necessarily a boolean
- Combine logical operators with optional chaining (?.) for safe, readable conditional access
Runtime & versions
Browsers and JavaScript runtimes. Feature availability depends on the language and runtime version used by your project; consult the official reference below.
ECMAScript specification