Это сокращение свойства инициализатора объекта в ES6.
var f = {a, b, c, d:1};
Это работает, потому что значение свойства имеет то же имя, что и идентификатор свойства. Это новое дополнение к синтаксису Object Initialiser ( раздел 11.1.5 ) в последней версии ECMAScript 6 draft Rev 13 . И, конечно же, как и ограничения, установленные в ECMAScript 3, вы не можете использовать зарезервированное слово в качестве имени своего свойства.
Такое сокращение не сильно изменит ваш код, оно только сделает все немного слаще!
function createCar(name, brand, speed) {
return { type: 'Car', name: name, brand: brand, speed: speed };
}
function createSweetCar(name, brand, speed) {
return { type: 'Car', name, brand, speed };
}
См. Таблицу совместимости для поддержки этих обозначений. В неподдерживаемых средах эти обозначения приведут к синтаксическим ошибкам.
Эта сокращенная запись довольно хорошо предлагает сопоставление объектов:
В ECMAScript5 то, что мы делали раньше:
var tmp = getData();
var op = tmp.op;
var lhs = tmp.lhs;
var rhs = tmp.rhs;
Это можно сделать в ECMAScript6 с помощью одной строки кода:
var { op, lhs, rhs } = getData();