#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 за ответ.