Q:

Что за конструкция a.a = {} = 2 и как она работает?

Попалась такая конструкция, но нигде не могу найти что это значит.
Как это называется и что оно делает?
По идее сначала а.а становиться равно пустому объекту а потом?
Почему в итоге в консоли выведет {a:2}?

let a = {}
a.a = 1
a.a = {} = 2 //что это значит
console.log(a)

a.a = a = 2 // это выдает circular посередине

A:

Если я не ошибаюсь, ваш загадочный фрагмент кода имеет академический интерес, хоть ничего полезного и не делает)
В череде присвоений операции проходят справа налево. Поэтому порядок такой:

{} = 2: Поскольку присвоить объекту (да и вообще не-переменной) значение нельзя, мы имеем дело с пограничным случаем деструктурирования без переменной. Если вы вместо двойки будете использовать null или undefined, сообщение об ошибке это подтвердит. Деструктурирование других примитивов возможно: { toString } = 2 присваивает переменной toString функцию 2..toString.

При этом присваивание, даже с деструктурированием, возвращает второй операнд, т. е. 2.

Это значение в конце концов присваивается свойству a.a;

