ES6: Вместо введения

Открывая любую книгу, посвященную JavaScript, вы с огромной долей вероятности обнаружите в ней целую главу посвященную истории развития ECMAScript, избыточно описывающую тот долгий путь, пройденный стандартом. Но, на самом деле, ES практически не развивался с момента релиза третьей версии (ES3), который состоялся в декабре 1999 года. Позже, в июне 2011 года, ES5 стал официальным стандартом. Путем нехитрых вычислений вы можете подсчитать, что между релизами двух стандартов прошло чуть менее 12 лет. Что было добавлено в стандарт ES5 в результате 12 лет разработки:

  • Strict mode
  • Аксессоры (геттеры и сеттеры)
  • Небольшие изменения синтаксиса:
    • появилась возможность использовать ключевые слова в качестве свойств объектов
    • строковые литералы теперь можно размещать в несколько строк кода
    • после последнего элемента массива и объекта можно ставить запятую
  • Несколько десятков новых функций в стандартной библиотеке для работы с массивами, объектами (Object.create, Object.defineProperty, Object.keys и так далее), функциями и датами
  • Поддержка JSON

Более подробное описание всех нововведений ES5 можно посмотреть в книге Speaking JavaScript (доступна онлайн).

Список новых возможностей, добавленных в стандарт ES5, можно пересчитать по пальцам одной руки. Из всего вышеперечисленного может сложиться впечатление, что развитие JavaScript и в будущем будет происходить крайне медленно. Это не так. Новый стандарт ES6 принёс с собой огромное количество нововведений, наиболее полный список которых можно посмотреть в этом репозитории (список содержит 350 пунктов).

Все нововведения подразделяются на три группы:

  • Улучшение синтаксиса для уже существующих решений (например, в библиотеках):
    • Классы
    • Модули
  • Новая функциональность в стандартной библиотеке:
    • Новые методы для массивов и строк
    • Promises
    • Maps и Sets
  • Абсолютно новые возможности:
    • Генераторы (Generators)
    • Прокси (Proxies)
    • WeakMaps

ES6 был утвержден в июне 2015 года. Уже сейчас вы можете использовать многие возможности нового стандарта в свежих версиях браузеров и node.js. Подробную таблицу совместимости можно посмотреть здесь.

ES6 или ES2015? Что вообще происходит?

Официальное название нового стандарта − ES2015. Тем не менее, ES6 − название, которое все понимают и используют.

Зачем было менять систему названий версий? Подобное решение связано с новым процессом разработки стандарта. Все предыдущие стандарты разрабатывались крупными компаниями (Google, Microsoft, Yahoo и прочими), связанными с созданием браузеров или других сред, поддерживающих JavaScript. При подобном подходе к разработке стандарта рядовой разработчик практически никак не мог повлиять на развитие языка.

Процесс разработки стандарта ES6 кардинально отличается от предыдущего. Новый процесс выглядит следующим образом:

  1. Создается предложение внести новую возможность, поменять текущую синтаксическую конструкцию или любое другое улучшение.
  2. Создается “черновик” − подробное описание того, как работает предлагаемое изменение.
  3. Изменение становится “кандидатом” на внесение в стандарт. Будучи “кандидатом” изменение рассматривается теми, кто будет создавать имплементации, а также обычными пользователями.
  4. Изменение вносится в стандарт.

Подобная схема разработки стандарта позволяет тестировать огромное количество изменений и нововведений, а также учитывать мнение людей, ежедневно использующих JavaScript в своей работе. В связи с такими объемными работами над стандартом каждый год (скорее всего, летом) будет выходить новая версия. Таким образом, уже в июне 2016 года новым стандартом станет ES2016, или ES7 (по старой системе наименования).

Стоит ли вообще изучать стандарт ES5 сейчас?

Да, стоит. Вот почему:

  • ES6 − расширение стандарта ES5. Новая версия стандарта не протироворечит ничему, что было описано в предыдущей версии. Таким образом, все, что вы знаете о ES5 не уйдет в никуда.
  • В ES6 добавлены несколько возможностей, которые заменяют аналогичые им в ES5, но используют их в качестве основы.
  • На протяжении нескольких лет вам придется компилировать свой ES6 код в ES5 для поддержки большего числа браузеров. Согласитесь, что неплохо было бы понимать скомпилированный код.
  • Важно понимать чужой код, написанный с использованием старого стандарта.

Комментарии