Защита от неопределенного при деконструкции объекта со значениями по умолчанию

#javascript #object-destructuring

#javascript #разрушение объекта

Вопрос:

В Javascript можно деконструировать объекты и указывать значения по умолчанию для объявления переменных. Ниже свойство name объекта school внутри пользовательского объекта будет присвоено переменной name. Однако это также происходит для неопределенных переменных.

 const user = {
 id: 339,
 name: 'Fred',
 age: 42,
 education: {
  school: {
   name: undefined
  }
 }
}
const {education: {school: {name}} = {school: {name: 'Dunno'}}} = user;
console.log(name); //prints: undefined
  

Приведенный выше пример из деструктурирования вложенных объектов

Есть ли способ защититься от этого внутри деконструкции, чтобы в имени печаталось значение по умолчанию ‘Dunno’?

Комментарии:

1. const {education: {school: {name = 'Dunno'}}} = user;

2. ах да, const {education: {school: {name = 'Dunno'} = {}} = {}} = user работает, но это другой синтаксис. Как заставить это работать с синтаксисом из вопроса?

3. Либо убедитесь, что у вас есть education во втором, либо не уничтожайте education в первую очередь. Почему вы все равно хотите использовать деструктор дважды?

4. Ах, я только что понял, что мой вопрос не имеет особого смысла, потому что сначала он деконструирует / устанавливает по умолчанию весь объект education. спасибо @Keith за ответ.