// Why did one question mark become more code? // Teaching excerpts; see the explanation and boundaries on the episode page. // Older output. Same behavior. // target: ES2022 getUser()?.name ?? "Guest"; // target: ES2017 // Temporary values + null checks // Missing user? Stop the property read. getUser() → null null?.name → undefined undefined ?? "Guest" → "Guest" // Save the value. Check it once received. const user = getUser(); const name = user === null || user === undefined ? undefined : user.name; const result = name === null || name === undefined ? "Guest" : name; // An empty name is still a value. "" ?? "Guest" // "" "" || "Guest" // "Guest"