Optional chaining ?. and nullish coalescing ??
The two safe-access operators
These pair perfectly with the narrowing patterns from this module.
Optional chaining ?.
Short-circuits the whole chain to undefined if any intermediate is null or undefined.
user?.address?.zipCode; // undefined if user or address is null user?.greet?.(); // calls greet only if it exists arr?.[0]; // arr[0] only if arr is non-null
Nullish coalescing ??
Returns the right side only if the left is null or undefined. Unlike ||, it does NOT replace 0, "", or false — those are real values you usually want to keep.
const port = config.port ?? 3000; // 0 stays 0 const name = user.nickname ?? user.name; // empty string nickname stays
Together
The canonical "safe pick with default" pattern:
const city = order?.shipping?.address?.city ?? "Unknown";
If any link is null/undefined → "Unknown". If shipping.address.city is "" or 0 → keeps it.
|| vs ??
x || y returns y for ANY falsy x — including 0, "", false. x ?? y only for null/undefined. In configs, ?? is almost always what you want.
Sign up to start coding
Theory is open to everyone. The interactive editor, live preview, and check are unlocked with a 7-day free trial — card required, cancel anytime.
Sign up — free trial →First 10 lessons in each track are free. No card needed for those.