Это объект, разрушающий синтаксис. Когда вы делаете, например ::100100
const func = ({ foo }) => console.log('foo is', foo);
... вы говорите JavaScript: func
будет принимать объект в качестве аргумента, но меня интересует только свойство этого объекта с именем foo
, поэтому, пожалуйста, укажите значение foo
свойство в переменной с именем foo
и игнорируем остальное.
Однако, хотя geo-city
является допустимым именем свойства в JavaScript, оно не является допустимым именем переменной (в противном случае невозможно было бы определить, является ли это переменная или вы пытаетесь вычесть city
из geo
). Один из способов решить эту проблему - просто взять объект в качестве аргумента:
const func = (obj) => console.log('foo is', obj.foo);
... или, применительно к вашему коду:
app.intent('Location', (conv, obj) => {
const luckyNumber = obj['geo-city'].length;
// ...
});
Но деструктуризация - это хорошо, и у нас есть другой способ заставить ее работать. При деструкции объекта вы можете указать другое имя для переменной (ей):
const func = ({ foo: valueOfFoo }) => console.log('foo is', valueOfFoo);
Это работает даже с таким свойством, как geo-city
, но вы должны поместить его в кавычки, например:
app.intent('Location', (conv, {'geo-city': geoCity}) => {
const luckyNumber = geoCity.length;
// ...
});