`??`の左辺が[[Nullish (JavaScript)|Nullish]]の場合に右の値を返し、それ以外の場合に左を返す演算子。
以下の2つは等価である。
```ts
const x = foo ?? bar();
```
```ts
const x = foo !== null && foo !== undefined ? foo : bar();
```
## その他の比較例
```ts
console.log(undefined || "値がないんじゃあああ!!!")
// -> 値がないんじゃあああ!!!
console.log(null || "値がないんじゃあああ!!!")
// -> 値がないんじゃあああ!!!
console.log({} || "値がないんじゃあああ!!!")
// -> {}
console.log([] || "値がないんじゃあああ!!!")
// -> []
console.log(0 || "値がないんじゃあああ!!!")
// -> 値がないんじゃあああ!!!
console.log("" || "値がないんじゃあああ!!!")
// -> 値がないんじゃあああ!!!
```
```ts
console.log(undefined ?? "値がないんじゃあああ!!!")
// -> 値がないんじゃあああ!!!
console.log(null ?? "値がないんじゃあああ!!!")
// -> 値がないんじゃあああ!!!
console.log({} ?? "値がないんじゃあああ!!!")
// -> {}
console.log([] ?? "値がないんじゃあああ!!!")
// -> []
console.log(0 ?? "値がないんじゃあああ!!!")
// -> 0
console.log("" ?? "値がないんじゃあああ!!!")
// ->
```