Use optional chaining (?.) to safely access nested properties
const user = { profile: { name: 'Alice' } };
const name = user?.profile?.name;
console.log(name); // "Alice"
const missing = user?.address?.city;
console.log(missing); // undefined (no error)const data = {
user: {
name: 'John',
address: {
city: 'NYC'
}
}
};
// Safe access
const city = data?.user?.address?.city;
console.log(city); // "NYC"
// Won't throw error
const zip = data?.user?.address?.zipCode;
console.log(zip); // undefined
// With method calls
const result = user?.getName?.();
// With arrays
const firstItem = items?.[0]?.name;const value = obj?.prop ?? 'default';
// Uses 'default' only if null or undefinedconst name = user?.profile?.name ?? 'Anonymous';Avoid nested conditionals for property access
// DON'T DO THIS
var city;
if (data && data.user && data.user.address) {
city = data.user.address.city;
}✓ Works in all modern browsers (ES2020+)