Перейти к содержимому

Возможности JavaScript ES6

ECMAScript 6 (ES6) — это значительное обновление языка JavaScript, которое представило множество новых возможностей, сделав JavaScript более мощным и эффективным. Это руководство предлагает подробное изучение ES6, с исчерпывающими объяснениями и множеством примеров кода, которые помогут вам освоить эти новые возможности.

Введение в ES6

ES6, также известный как ECMAScript 2015, принес множество улучшений и новых возможностей в JavaScript. Эти изменения сделали язык более современным и удобным в работе, повысив как читаемость, так и поддерживаемость.

Let и Const

Одно из самых заметных изменений в ES6 — появление let и const для объявления переменных. Эти новые ключевые слова обеспечивают более удобные правила области видимости и необходимы для написания надежного кода.

Let

Ключевое слово let позволяет объявлять переменные, область видимости которых ограничена блоком, оператором или выражением, в которых они используются.


Output appears here after Run.

В приведенном выше примере x, объявленная внутри блока if, — это отдельная переменная от x, объявленной снаружи. Это демонстрирует блочную область видимости, которую предоставляет let.

Const

Ключевое слово const используется для объявления переменных, значения которых не предполагается изменять. Как и let, оно имеет блочную область видимости.


Output appears here after Run.

В этом примере попытка присвоить y новое значение приводит к ошибке, потому что const объявляет константу, значение которой нельзя изменить.

INFO

Всегда используйте const для переменных, которые не нужно переназначать, чтобы избежать случайных изменений.

Стрелочные функции

Стрелочные функции предоставляют лаконичный синтаксис для записи функциональных выражений. Они также лексически связывают значение this, что делает их особенно полезными для написания коротких функций.


Output appears here after Run.

Здесь стрелочная функция add принимает два параметра и возвращает их сумму. Лаконичный синтаксис делает код более читаемым и компактным.

INFO

Используйте стрелочные функции для лаконичного синтаксиса и сохранения лексического контекста this.

Шаблонные литералы

Шаблонные литералы упрощают создание строк, особенно при вставке переменных или выражений. Они используют обратные кавычки (```) вместо кавычек.


Output appears here after Run.

Этот пример показывает, как шаблонные литералы позволяют напрямую вставлять переменную name в строку, повышая читаемость и удобство.

Значения параметров по умолчанию

Значения параметров по умолчанию позволяют инициализировать параметры функции значениями по умолчанию, если значения не переданы.


Output appears here after Run.

В этом примере функция multiply присваивает параметру b значение по умолчанию 1, если второй аргумент не передан, обеспечивая всегда корректный результат.

Деструктурирующее присваивание

Деструктурирующее присваивание — это удобный способ извлекать значения из массивов или объектов в отдельные переменные.

Деструктуризация массива


Output appears here after Run.

Этот пример показывает, как деструктуризация массива позволяет присвоить значения массива numbers отдельным переменным a, b и c.

Деструктуризация объекта


Output appears here after Run.

В этом примере деструктуризация объекта извлекает свойства name и age из объекта person в отдельные переменные.

Улучшенные объектные литералы

ES6 улучшает объектные литералы, делая синтаксис более лаконичным и читаемым.


Output appears here after Run.

Здесь объект obj использует сокращенные имена свойств и определения методов, делая объектный литерал более лаконичным.

Промисы

Промисы предоставляют более эффективный способ работы с асинхронными операциями, избегая callback hell и делая код более читаемым.


Output appears here after Run.

В этом примере создается промис, который выполняется через 1 секунду с сообщением 'Success!'. Метод then используется для обработки выполненного значения.

INFO

Используйте промисы для аккуратной обработки асинхронных операций и избегайте callback hell.

Классы

ES6 представил классы, предоставив более понятный и лаконичный синтаксис для создания объектов и работы с наследованием.


Output appears here after Run.

Этот пример демонстрирует, как классы в ES6 предлагают чистый и интуитивно понятный синтаксис для определения объектов и их поведения.

Модули

Модули позволяют разбивать код на отдельные файлы и импортировать/экспортировать функции, объекты или примитивы между файлами.

Экспорт


javascript
// math.js
export const add = (a, b) => a + b;

Импорт


javascript
// main.js
import { add } from './math.js';
console.log(add(2, 3)); // 5

В этих примерах функция add экспортируется из math.js и импортируется в main.js, демонстрируя, как модули помогают организовывать и повторно использовать код.

Операторы rest и spread

Оператор rest

Оператор rest (...) позволяет представлять неопределенное количество аргументов в виде массива.


Output appears here after Run.

В этом примере функция sum использует оператор rest, чтобы собрать все аргументы в массив, что упрощает выполнение операций над ними.

Оператор spread

Оператор spread (...) позволяет расширять итерируемую сущность (например, массив) в местах, где ожидается ноль или более аргументов или элементов.


Output appears here after Run.

Этот пример показывает, как оператор spread можно использовать для объединения массивов в один массив, упрощая код.

Итераторы и генераторы

Итераторы

Итераторы — это объекты, которые позволяют проходить по коллекции, например массиву или строке.


Output appears here after Run.

В этом примере итератор предоставляет способ последовательно получать доступ к каждому элементу массива.

Генераторы

Генераторы — это функции, которые можно приостанавливать и возобновлять, что дает мощный способ работы с итерируемыми сущностями.


Output appears here after Run.

Этот пример показывает, как функция-генератор может выдавать значения по одному, приостанавливая выполнение между каждым yield.

Символы

Символы — это новый примитивный тип данных, представленный в ES6. Они уникальны и неизменяемы, и часто используются для создания уникальных ключей объектов.


Output appears here after Run.

В этом примере symbol1 и symbol2 уникальны, даже несмотря на то, что у них одинаковое описание.

Map и Set

Map

Map — это коллекции пар ключ-значение, где ключи могут быть любого типа.


Output appears here after Run.

Этот пример демонстрирует, как создать map, задать пары ключ-значение и получить значения.

Set

Set — это коллекции уникальных значений.


Output appears here after Run.

В этом примере set содержит только уникальные значения, хотя 3 был добавлен дважды.

Прокси

Прокси позволяют создать proxy для другого объекта, давая возможность перехватывать и переопределять базовые операции.


Output appears here after Run.

Этот пример показывает, как proxy может перехватывать доступ к свойствам, предоставляя пользовательский ответ, когда свойство не найдено.

WeakMap и WeakSet

WeakMap

WeakMap похож на Map, но позволяет использовать только объекты в качестве ключей и не препятствует сборке мусора, если на объект-ключ больше нет других ссылок.


Output appears here after Run.

WeakSet

WeakSet похож на Set, но позволяет использовать только объекты в качестве значений и не препятствует сборке мусора, если на объект больше нет других ссылок.


Output appears here after Run.

Заключение

ES6 приносит множество возможностей, которые делают JavaScript более надежным и эффективным языком. Понимая и используя эти возможности, разработчики могут писать более чистый и поддерживаемый код. Это руководство дало подробный обзор самых важных аспектов ES6, а также примеры, которые помогут вам начать.

Практика

Какие из следующих возможностей были представлены в JavaScript ES6?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.