Может ли кто-нибудь объяснить, что здесь происходит? const {a={}}=b

#javascript

Вопрос:

Может ли кто-нибудь объяснить разницу между

 const {a={}}=b
 

и

 let a={}
a=b
 

Он отлично работает const {a={}}=b , но на втором возвращается только пустой объект.

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

1. Прочитав деструкцию объектов, вы можете получить то, что ищете. И немного улучшите вопрос, это сбивает с толку.

Ответ №1:

В первом фрагменте кода используется деструктуризация. Он пытается вывести a свойство из значения in b . Если такого свойства не существует, a по умолчанию используется пустой объект.

Более подробно

 const {a={}}=b
 

это как

 const a =
  b.a === undefined
  ? {}
  : b.a;
 

или

 let a;
if (b.a === undefined) {
  a = {};
} else {
  a = b.a;
}
 

Ваш второй фрагмент

 let a={}
a=b
 

это совершенно другое. Он создает один объект, затем отбрасывает его и присваивает a тому, что b содержит.