

0 / 2 embers
0 / 3000 xp
click for more info
Complete a lesson to start your streak
click for more info
Difficulty: 3
click for more info
Not enough gems
Cost: 6 gems
1: Objects
incomplete
2: No Colon
incomplete
3: Updating Properties
incomplete
4: Nesting Properties
incomplete
5: Nesting Properties Quiz
incomplete
6: Optional Chaining
incomplete
7: When to Chain
incomplete
8: Object Methods
incomplete
9: Methods Mutate
incomplete
10: Initializing Props
incomplete
11: Strings As Keys
incomplete
12: This
incomplete
13: Arrow Functions
incomplete
14: Fat Arrows and This
incomplete
15: Spread Syntax
incomplete
16: Return Objects
incomplete
17: Destructuring
incomplete
18: Not Bound
incomplete
Back
ctrl+,
Next
ctrl+.
This lesson's interactive features are locked, please to keep using them
You should only use ?. chains when you expect an object may not exist. For example, if according to our business logic, a user must have an address object, but the address object may not have a street property, we wouldn't use the optional chaining operator because we expect user.address to never be undefined.
const street = user.address.street;
But if not all users have an address, we might use the optional chaining operator:
const street = user.address?.street;
Or, if we aren't even sure if the user object exists:
const street = user?.address?.street;
We don't want to overuse it because if we expect that all users have objects, and we come across one that doesn't we probably want an error thrown so we can see it and go fix the problem. Good errors make debugging easier.