Что это за синтаксис JavaScript, где у вас есть() вокруг всего выражения переменной?

({ body: { customer } } = await callCreateCustomer({
    email: createRandomEmailAddress(),
    key: 999,
    password: 'password',
}));

Я не понимаю, что это значит, когда у тебя есть () вокруг всего выражения?

Что оно делает?

Ответы

Ответ 1

Это Уничтожение Назначения без декларации. Здесь переменная customer уже объявлена выше, и значение присваивается с помощью response.body.customer

Из документации:

Скобки (...) вокруг оператора присваивания требуются при использовании литерального деструктурирования объекта без объявления.

{a, b} = {a: 1, b: 2} не является допустимым автономным синтаксисом, поскольку {a, b} в левой части считается блоком, а не литералом объекта.

However, ({a, b} = {a: 1, b: 2}) is valid, as is var {a, b} = {a: 1, b: 2}

Вашему (...) выражению должна предшествовать точка с запятой, или оно может использоваться для выполнения функции в предыдущей строке.

Ответ 2

Он вызывает контекст выражения так, что первый { не рассматривается как начало блока.