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:
nullundefined0""(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" // false0 ?? "default" // 0"" ?? "default" // ""null ?? "default" // "default"undefined ?? "default" // "default"Real-World Examples
javascript
123456789
// API response with optional fieldsconst timeout = config.timeout ?? 5000;const retries = options.retries ?? 3;
// Form valuesconst quantity = input.value ?? 1;
// Feature flagsconst isEnabled = settings.feature ?? false;When to Use Which
Use ?? when:
0,"", orfalseare 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.