Skip to content

Commit

Permalink
word fix in example at es6-6-destructuring.md
Browse files Browse the repository at this point in the history
  • Loading branch information
Baukaalm committed Jun 28, 2017
1 parent af3dc2d commit 9590538
Showing 1 changed file with 15 additions and 15 deletions.
30 changes: 15 additions & 15 deletions articles/es6-6-destructuring.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# ES6: реструктуризующее присваивание

Скорее всего, вы уже видели несколько примеров использования реструктуризующего присваивания, или *destructuring*. Данная синтаксическая конструкция используется для извлечения данных из массивов и объектов.
Скорее всего, вы уже видели несколько примеров использования реструктуризующего присваивания, или *destructuring*. Данная синтаксическая конструкция используется для извлечения данных из массивов и объектов.

Чтобы вас не смущало такое хитрое название, можно представить процесс, не как *разложение* объекта или массива на его составляющие, а как простое *структурированное* присваивание. Проще всего понять новую синтаксическю конструкцию можно, рассмотрев пример из прошлого:
```javascript
// Структурированное присваивание для массивов
var arr = ['this', 'is', 'array'];
var first = arr[0],
second = arr[1],
var first = arr[0],
second = arr[1],
third = arr[2];

console.log(first, second, third); // this is array
Expand All @@ -18,12 +18,12 @@ var obj = {
b: 'is',
c: 'object'
};
var a = obj.a,
b = obj.b,
var a = obj.a,
b = obj.b,
c = obj.c;

console.log(a, b, c); // this is object
```
```

Проще говоря, раньше приходилось записывать каждую переменную по отдельности вручную. А если приходилось иметь дело с динамическими данными, то могла понадобиться и ещё одна дополнительная переменная:
```javascript
Expand All @@ -32,12 +32,12 @@ var f = function() {
};

var tmp = f(),
first = tmp[0],
second = tmp[1],
first = tmp[0],
second = tmp[1],
third = tmp[2];

console.log(first, second, third); // this is array
```
```

С релизом ES6 всё стало в разы проще:
```javascript
Expand Down Expand Up @@ -83,23 +83,23 @@ console.log(a, b, c); // ReferenceError

Важно понимать отличие *реструктуризующего присваивания* от создания объекта с помощью литерала:
```javascript
// Создание объекта
// Создание объекта
var a = 10, b = 20;
var obj = { x: a, y: b };
console.log(obj.x, obj.y); // 10 20
```

Создавая объект с помощью литерала, вы следуете правилу: справа находится свойство, слева − значение `{ свойство: значение }`. Подобное присваивание свойств интуитивно понятно, так как можно представить его, как обычное присваивание значение переменной `переменная = значение`.
Создавая объект с помощью литерала, вы следуете правилу: справа находится свойство, слева − значение `{ свойство: значение }`. Подобное присваивание свойств интуитивно понятно, так как можно представить его, как обычное присваивание значение переменной `переменная = значение`.

Однако, когда вы используете *реструктуризующее присваивание*, названное выше правило действует в точности наоборот `{ значение: свойство }`.
Однако, когда вы используете *реструктуризующее присваивание*, названное выше правило действует в точности наоборот `{ значение: свойство }`.
```javascript
var a = 10, b = 20;
var obj = { x: a, y: b };
var { x: A, y: B } = obj;
console.log(A, B); // 10 20
```

В случае `var obj = { x: a, y: b }` x и y представляют свойства объекта. В случае `var { x: A, y: B } = obj;` x и y **тоже** представляют свойства.
В случае `var obj = { x: a, y: b }` x и y представляют свойства объекта. В случае `var { x: A, y: B } = obj;` x и y **тоже** представляют свойства.

### Присваивание при отсутствии свойства
Если переданного вами свойства нет в объекте, то вы получите переменную, содержащую `undefined`:
Expand Down Expand Up @@ -135,7 +135,7 @@ console.log(t); // String.prototype.trim
```javascript
// Строки
var [a, b, c] = 'xyz';
console.log(a, b, b); // x y z
console.log(a, b, c); // x y z

// Коллекции DOM элементов
// Первые две ссылки со страницы
Expand Down Expand Up @@ -174,4 +174,4 @@ console.log(x, y); // 4 16

var { prop: x, pow: y = calc(x)} = { prop: 4, pow: 10 };
console.log(x, y); // 4 10
```
```

0 comments on commit 9590538

Please sign in to comment.