65 lines
2.6 KiB
Markdown
65 lines
2.6 KiB
Markdown
|
---
|
|||
|
title: Destructuring Assignment
|
|||
|
localeTitle: Назначение деструктуризации
|
|||
|
---
|
|||
|
## Назначение деструктуризации
|
|||
|
|
|||
|
Синтаксис присваивания Destructuring - это выражение Javascript, которое позволяет распаковывать значения или свойства из массивов или объектов.
|
|||
|
|
|||
|
Допустим, у вас есть массив, который содержит имя и фамилию, поскольку это два значения, но вы хотите переназначить эти значения на что-то более описательное. Для этого вы можете использовать Destructuring.
|
|||
|
|
|||
|
**ES5 Destructuring**
|
|||
|
|
|||
|
```js
|
|||
|
var fullName = ["John", "Smith"];
|
|||
|
var firstName = fullName[0];
|
|||
|
var lastName = fullName[1];
|
|||
|
|
|||
|
console.log(firstName, lastName); // John Smith
|
|||
|
```
|
|||
|
|
|||
|
**ES6 Destructuring**
|
|||
|
|
|||
|
```js
|
|||
|
const fullName = ["John", "Smith"];
|
|||
|
const [firstName, lastName] = fullName;
|
|||
|
|
|||
|
console.log(firstName, lastName); // John Smith
|
|||
|
```
|
|||
|
|
|||
|
Приведенные выше примеры показывают преимущество использования назначения ES6 Destructuring Assignment.
|
|||
|
|
|||
|
Вы также можете использовать Destructuring для объектов с использованием аналогичного синтаксиса
|
|||
|
|
|||
|
```js
|
|||
|
const fullName = { first: "John", last: "Smith"};
|
|||
|
const {first, last} = fullName;
|
|||
|
|
|||
|
console.log(first, last); // John Smith
|
|||
|
```
|
|||
|
|
|||
|
Object Destructuring Assignment немного отличается, потому что объект должен иметь свойства с именами, которые вы назначаете. Поэтому приведенный ниже код не будет работать так, как предполагалось.
|
|||
|
|
|||
|
```js
|
|||
|
const fullName = { first: "John", last: "Smith"};
|
|||
|
const {firstName, lastName} = fullName;
|
|||
|
|
|||
|
console.log(firstName, lastName); // undefined undefined
|
|||
|
```
|
|||
|
|
|||
|
Вы все равно можете достичь желаемого результата, используя следующий синтаксис.
|
|||
|
|
|||
|
```js
|
|||
|
const obj = {propertyName: value}
|
|||
|
{propertyName: desiredVariableName} = obj
|
|||
|
```
|
|||
|
|
|||
|
Наш предыдущий пример был бы переписан следующим образом:
|
|||
|
|
|||
|
```js
|
|||
|
const fullName = { first: "John", last: "Smith"};
|
|||
|
const {first: firstName, last: lastName} = fullName;
|
|||
|
|
|||
|
console.log(firstName, lastName); // John Smith
|
|||
|
|
|||
|
```
|