Подойдёт const { address: { city = 'Не указан' } = {} } = user. Значения по умолчанию работают для undefined, но не заменяют null.
Вложенная деструктуризация объекта с необязательным адресом
Подойдёт const { address: { city = 'Не указан' } = {} } = user. Значения по умолчанию работают для undefined, но не заменяют null.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Дан объект user = { name: 'Анна', address: { city: 'Казань' } }. Извлеките city одной деструктуризацией; при отсутствии address или city используйте «Не указан».
Ответ
Подойдёт const { address: { city = 'Не указан' } = {} } = user. Значения по умолчанию работают для undefined, но не заменяют null.
В приведённом объекте city будет «Казань». Для {} результат — «Не указан». Если контракт допускает address: null, вложенная деструктуризация выбросит ошибку; безопаснее написать const city = user.address?.city ?? 'Не указан'. Если сам user может отсутствовать, добавьте optional chaining и к нему.