Destructuring в Javascript.
Деструктуризация или разбиение на элементы - новая возможность в языке Javascript (ES2015/ES6), которая позволяет извлекать данные из массивов и объектов, используя синтаксис объявления массивов и литералов объектов соответственно.
Деструктуризация массивов
Мне кажется начинать изучение этой темы лучше с массивов. Оно как-то нагляднее что ли выглядит, особенно, когда в первый раз начинаешь читать об этом.
Объявление переменных
В следующем примере мы используем деструктуризацию для задания значения переменных из массива:
1 | //ES2015 |
Казалось бы, ничего интересного, и даже в старом стиле вроде как нагляднее. Но использование деструктуризации позволяет нам, например, поменять местами значения переменных без использования третьей:
1 | //ES2015 |
Возврат несколько значений
Функции всегда могли возвращать массивы. Но благодаря деструктуризации мы можем получить дополнительную гибкость.
1 | //ES2015 |
В ES5 такой пример свелся либо к вызову функции getAges() 3 раза, либо к дополнительной переменной, которая бы хранила значение функции.
Игнорирование значений
Допустим, мы знаем, что предыдущая функции возвращает всегда массив из 3-х возрастов. Если нам не нужны все 3 из них, мы можем просто игнорировать ненужные значения, опуская названия переменных:
1 | //ES2015 |
Деструктуризация объектов
После того, как мы поняли суть работы с массивами, понять как работает деструктуризация с объектами труда не составит.
1 | //ES2015 |
В примере выше мы создали две новые переменные, значения которых были взяты из свойств объекта с точно таким же именем. А если мы хотим объявить новые переменные и присвоить им значения старых? Пожалуйста:
1 | //ES2015 |
Вложенные объекты
Часто бывает что у нас есть объект с опциями или метаданными, и на основе него мы хотим сформировать какой-то другой, новый объект. Давайте рассмотрим следующий пример:
1 | //ES2015 |
Объект как параметр функции
Да, деструктуризация будет работать и в этом случае.
1 | //ES2015 |
Итог
Использование деструктуризации может помочь сократить количество строк кода и сделать его более читабельным. Безусловно, это очередной инструмент, которым нужно уметь пользоваться.