Codectionary / Developer documentation / JavaScript

Logical Operators

Logical operators combine or invert boolean expressions. && (AND) returns the first falsy value or the last value if all are truthy. || (OR) returns the first truthy value or the last value if all are falsy. ! (NOT) inverts a boolean. The nullish coalescing operator (??) returns the right side only when the left is null or undefined.

Syntax

a && b, a || b, !a, a ?? b

Examples

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 3

Best 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

At a glance

Purpose
Application logic and interaction
File extension
.js ยท .mjs
Runs in
Browsers and JavaScript runtimes
Usually used with
HTML, CSS and Web APIs

Specifications & further reading

Related JavaScript documentation