Я прошел через синтаксис деструктурирования массива, который хорошо понятен.Синтаксис деструкции объекта - ES6
Что именно мы делаем ниже, когда говорим var {p, q} = o;
?
Is p
и q
в var {p, q}
различной от свойств o
, т.е. 'p'
и 'q'
? Если да,
Почему var {a, b} = o;
не работает?
> var o = {p: 42, q: true};
undefined
> p
ReferenceError: p is not defined
> q
ReferenceError: q is not defined
> o['p']
42
> o['q']
true
> var {p, q} = o;
undefined
> p
42
> q
true
> var {a, b} = o;
undefined
> a
undefined
> b
undefined
* Примечание: Я узнал, что ключи словаря являются строковых литералов в JavaScript *
'var {p, q} = o;' === 'var p = o.p;' и 'var q = o.q;' это будет работать, только если переменные имеют одинаковое имя. –
@Kitler Это не своеобразная концепция? Какая концепция языка программирования выведена для обеспечения такого объекта? Есть ли другой язык, который делает такие странные вещи?Я думаю, что деструктурирование скрыто от python. – overexchange
Weird очень субъективен, это общий шаблон для назначения значений атрибутам из объекта, где совпадает имя, эта концепция взята из coffeescript iirc. –