JavaScript入門 練習問題 24:構文:オブジェクトの分割代入(プロパティ名の変更とデフォルト値)
次のコードを実行したときのコンソールへの出力として正しいものはどれですか?
```javascript
const user = { name: '佐藤', age: 30 };
const { name: userName, city = '東京' } = user;
console.log(userName, city);
```
- 佐藤 東京
- undefined 東京
- 佐藤 undefined
- undefined undefined
- 東京 佐藤
Qraftユーザーの成績:難易度 Eランク(レーティング1063)・正答率 77%(10/13回正解)
レーティングは解いた人の実力と正誤から算出する難しさ(初期値1200)。ランクはその全問題中の順位(S+が最難関、F-が最易)
正解と解説を見る
オブジェクトの分割代入では「元のプロパティ名: 新しい変数名」という形式でプロパティ名を変更でき、対応するプロパティが存在しない場合はデフォルト値が使われます。userオブジェクトのnameプロパティが変数userNameに代入され、存在しないcityプロパティにはデフォルト値'東京'が使われるため、出力は「佐藤 東京」になります。
【正解の理由】
「name: userName」という記法によりuser.nameの値(佐藤)がuserNameという変数名で取り出され、cityプロパティはuserオブジェクトに存在しないためデフォルト値の'東京'が採用されます。
【不正解の理由】
• 「undefined 東京」:userNameにはundefinedではなくuser.nameの値(佐藤)が正しく代入される
• 「佐藤 undefined」:cityプロパティが存在しない場合はデフォルト値が使われるため、undefinedにはならない
• 「undefined undefined」:分割代入とデフォルト値の両方の仕組みを誤解している
• 「東京 佐藤」:出力される変数の順序(userName, city)と値が入れ替わっている