Optional Chaining in JavaScript

The Optional Chaining Operator `?` allows you to read the value of a property located deep within an object without having to validate each property in the object. It works in a similar way than the chaining operator `.`, except that instead of causing an error if a reference is _nullish_, the expression will return a value of `undefined`.

A common way to validate properties was to do something like this:

```js
const player = {
  stats: {
    stamina: 40
  }
}

let stamina
if (player && player.stats) {
  stamina = player.stats.stamina
}
```

This was done because calling `player.stats.stamina` directly could led into an error being thrown if `stats` didn't exists, and sometimes even the execution would stop.

Using the Optional Chaining Operator, we could do something like this:

```js
const player = {
  stats: {
    stamina: 40
  }
}

const stamina = player.stats?.stamina
```

The result is shorter and simpler, and in case `stats` didn't exists the value would be `undefined`, without an error being thrown.

ricardo-santoyo
March 1, 2021
