В 2016 году я решил перейти от финансовой карьеры к карьере веб-разработчика. Одной из первых технологий, которые я начал изучать, был JavaScript. Что сделало это интересным, так это то, что ES2015 (также известный как ES6) был выпущен годом ранее, и люди все еще ломали голову над всеми изменениями, которые были добавлены в язык. Во время обучения я все время слышал об этой штуке под названием ES6 и о важности ее использования. Я был смущен! Что такое ES6? Какое отношение это имеет к JavaScript? Если это были новые функции, написанные для добавления в JavaScript (JS), то почему там была буква «E», а не «J». Разве JS6 не имеет больше смысла?

Погуглить не помогло. Я узнал, что ES6 означает ECMAScript (обычно произносится как сценарий ek-ma) версии 6 (который теперь официально называется ECMAscript 2015 из-за обязательства выпускать обновления языка ежегодно). Что такое ECMAScript? Я думал, что пишу на JavaScript? Как они связаны? В чем разница между ними?

После долгих исследований я наконец понял, в чем разница между ними. Я не хочу вдаваться в подробности истории ECMAScript и причин его существования. Если вам это интересно, в Википедии есть очень хорошая статья об этом. Я выяснил, что ECMAScript - это спецификация языка, а JavaScript - реализация этой спецификации.

Чтобы это было легче понять, давайте посмотрим на клавиатуру. Существует много типов клавиатур, но наиболее распространенным из них является клавиатура QWERTY, названная так из-за того, что клавиши расположены с QWERTY в качестве первых 6 букв в верхнем ряду. QWERTY - это спецификация или набор правил и тестов, которые определяют, как должна располагаться клавиатура. Это не означает, что вы не можете добавлять на клавиатуру дополнительные функции или возможности. Это просто означает, что для того, чтобы называть себя клавиатурой QWERTY, вы реализуете все функции, которые требуются в спецификации.

QWERTY-клавиатуры выпускают многие бренды. Если вы сравните клавиатуру Apple Magic Keyboard с клавиатурой Logitech, созданной для ПК Microsoft, вы увидите, что, несмотря на все различия, они имеют много общего. Это сходство связано с тем, что они реализуют спецификацию QWERTY и позволяют им всем говорить, что они являются клавиатурами QWERTY, даже если они сильно отличаются друг от друга.

В том же ключе ECMAScript определяет правила и тесты того, как реализовать язык, а JavaScript является реализацией этой спецификации. В отличие от клавиатур, существует не так много других языков, реализующих спецификацию, кроме JavaScript. Двумя крупнейшими языками, которые это делают, являются JScript и ActionScript. Из-за этого очень часто ECMAScript и JavaScript используются как взаимозаменяемые.

Как в ECMAScript добавляются новые функции?

Такие языки, как C # и Swift, хотя и имеют открытый исходный код, управляются одним объектом (Microsoft и Apple соответственно). ECMAScript, с другой стороны, не контролируется каким-либо одним объектом, а контролируется платой, называемой TC39. Этот совет состоит из представителей, которые заинтересованы в будущем ECMAScript.

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

Процесс состоит из 5 этапов, начиная с этапа 0 и заканчивая этапом 4. Этап 0 - это в основном предложения по добавлению к языку. Как вы понимаете, на этом этапе умирает большинство вещей. Если кто-то из членов правления считает, что предложение заслуживает внимания, он «поддержит» или «поддержит» предложение в официальном предложении, что является этапом 1. Отсюда правление обсудит его и то, как оно повлияет не только на будущее, но существующий код уже в сети. Как вы понимаете, на этом этапе многие вещи «умирают в комитете».

Если правление сочтет, что предложение стоит принять, оно будет переведено на этап 2, этап проекта. Это первый набросок того, как на самом деле будет выглядеть функция. Обычно на этом этапе также создается вавилонское преобразование, чтобы его можно было протестировать в реальных сценариях. API считается нестабильным, и вы принимаете его на свой страх и риск. Предполагается, что все, что дойдет до этапа 2, в конечном итоге будет принято.

Когда он считается стабильным, он перемещается на этап 3: этап кандидата. Это когда спецификации завершаются и делаются окончательные комментарии. Хотя изменения все еще могут происходить, критические изменения в API на данном этапе вряд ли произойдут. Когда все будет завершено и все будет считаться завершенным, он будет перемещен на этап 4, завершенный этап. Этот этап означает, что он готов, и остается только ждать следующего ежегодного выпуска ECMAScript. Для более подробного ознакомления с процессом подготовки ознакомьтесь с официальным документом процесса, который можно найти на GitHub TC39.

Благодаря этому новому этапному процессу JavaScript стал гораздо более надежным языком. Браузеры также намного быстрее внедряют эти новые функции, поскольку гораздо более прозрачно, что будет добавлено и каковы требования. Поскольку существует ECMAScript, написанный нами JavaScript постоянно улучшается.