JavaScript入門 練習問題 28:演算子:オプショナルチェイニング
次のコードの実行結果として正しいものはどれですか?
```javascript
const user = { profile: { name: '鈴木' } };
console.log(user.profile?.name);
console.log(user.address?.city);
```
- 1行目に「鈴木」、2行目に「undefined」が出力される
- 1行目に「鈴木」、2行目でエラーが発生して停止する
- 1行目に「undefined」、2行目に「undefined」が出力される
- 1行目でエラーが発生し、処理が停止する
- 1行目に「鈴木」、2行目に「null」が出力される
正解と解説を見る
正解:1行目に「鈴木」、2行目に「undefined」が出力される
オプショナルチェイニング(?.)は、プロパティが存在しない場合にエラーを発生させず、undefinedを返す仕組みです。user.addressは存在しないため、2行目はエラーにならずundefinedが出力されます。
【正解の理由】
user.profile?.nameはprofileが存在するため通常通り「鈴木」を返します。user.address?.cityはaddressが存在しないため、そこで評価が止まりundefinedが返されます。
【不正解の理由】
• 「2行目でエラーが発生して停止する」:オプショナルチェイニングはエラーを防ぐための機能であり、存在しないプロパティにアクセスしてもエラーにはならない
• 「1行目に「undefined」、2行目に「undefined」」:profileは実際に存在するプロパティなので、1行目は「鈴木」が正しく出力される
• 「1行目でエラーが発生し、処理が停止する」:profileは存在するため、1行目でエラーは発生しない
• 「2行目に「null」が出力される」:存在しないプロパティにオプショナルチェイニングを使った場合の戻り値はnullではなくundefinedである