Что за конструкция a.a = {} = 2 и как она работает?
Попалась такая конструкция, но нигде не могу найти что это значит.
Как это называется и что оно делает?
По идее сначала а.а становиться равно пустому объекту а потом?
Почему в итоге в консоли выведет {a:2}?
let a = {}
a.a = 1
a.a = {} = 2 //что это значит
console.log(a)
a.a = a = 2 // это выдает circular посередине
Ответы (1 шт):
Если я не ошибаюсь, ваш загадочный фрагмент кода имеет академический интерес, хоть ничего полезного и не делает)
В череде присвоений операции проходят справа налево. Поэтому порядок такой:
{} = 2: Поскольку присвоить объекту (да и вообще не-переменной) значение нельзя, мы имеем дело с пограничным случаем деструктурирования без переменной. Если вы вместо двойки будете использоватьnullилиundefined, сообщение об ошибке это подтвердит. Деструктурирование других примитивов возможно:{ toString } = 2присваивает переменнойtoStringфункцию2..toString.При этом присваивание, даже с деструктурированием, возвращает второй операнд, т. е.
2.Это значение в конце концов присваивается свойству
a.a;