ShaharAmir
← Back to Blog
JavaScript2 min read

Nullish Coalescing vs OR Operator

Why ?? is better than || for default values

S
Shahar Amir

Nullish Coalescing vs OR Operator

You've probably used || for default values:

javascript
1
const name = user.name || "Anonymous";

But there's a problem.

The || Problem

The OR operator treats these as falsy:

  • null
  • undefined
  • 0
  • "" (empty string)
  • false

javascript
123
const count = 0;
const result = count || 10;
// result is 10, not 0! 😱

Sometimes 0 or "" are valid values you want to keep.

Enter Nullish Coalescing (??)

The ?? operator only falls back for null or undefined:

javascript
1234567
const count = 0;
const result = count ?? 10;
// result is 0 ✅
const name = "";
const displayName = name ?? "Anonymous";
// displayName is "" ✅

Comparison

javascript
12345678910111213
// Using ||
false || "default" // "default"
0 || "default" // "default"
"" || "default" // "default"
null || "default" // "default"
undefined || "default" // "default"
// Using ??
false ?? "default" // false
0 ?? "default" // 0
"" ?? "default" // ""
null ?? "default" // "default"
undefined ?? "default" // "default"

Real-World Examples

javascript
123456789
// API response with optional fields
const timeout = config.timeout ?? 5000;
const retries = options.retries ?? 3;
// Form values
const quantity = input.value ?? 1;
// Feature flags
const isEnabled = settings.feature ?? false;

When to Use Which

Use ?? when:

  • 0, "", or false are valid values
  • Working with optional config/settings
  • Parsing user input

Use || when:

  • You want to replace ALL falsy values
  • Building boolean conditions

Default to ?? for most cases. It's what you usually mean.

#operators#es2020#fundamentals

Stay Updated 📬

Get the latest tips and tutorials delivered to your inbox. No spam, unsubscribe anytime.