Javascrip{filter}t имеет очень странную историю именований.
Впервые он был выпущен в 1995 году в составе Netscape Navigator, который дал новому языку название Livescrip{filtering}t. Год спустя, чтобы поймать медиа-ажиотаж вокруг Java того времени, название временно изменили на Javascrip{filtering}t (разумеется, отношения между Java и Javascrip{filtering}t совпадают с отношениями Lei Feng и Lei Feng Tower — это не имеет к этому никакого отношения)
Шутка про кривой орехок совсем не смешная
Примечание переводчика: статья Википедии в Javascrip{filter}t описывает эту историю более подробно
В 1996 году Netscape подала Javascrip{filtering}t в ECMA International (Европейская ассоциация производителей компьютеров) для стандартизации и окончательно утвердила новый языковой стандарт — ECMAscrip{filtering}t. С тех пор ECMAscrip{filtering}t стал основой для всех реализаций Javascrip{filtering}t, хотя по историческим и рыночным причинам (по-видимому, название ECMAscrip{filtering}t не является симпатичным...... На самом деле мы используем только ECMAscrip{filter}t для вызова стандарта, и обычно используем Javascrip{filter}t для вызова этого языка.
Терминология:
- Стандарт: Набор правил, определяющих, что отличает его от других вещей
- Внедрение: Конкретная реализация/реальная практика стандарта
Однако разработчикам Javascrip{filtering}t это особо не интересно, потому что ECMAscrip{filtering}t почти не изменился за 15 лет с момента своего появления, а многие реальные реализации уже сильно отличаются от стандарта. Фактически, после выхода первой версии ECMAscrip{filtering}t вскоре после этого были выпущены ещё две версии, но с момента выхода ECMAscrip{filter}t 3 в 1999 году в официальную спецификацию не было успешно внесено никаких изменений в течение десяти лет. Вместо этого производители браузеров спешат расширять собственные языки, оставляя веб-разработчикам ничего другого, кроме как экспериментировать и поддерживать эти API. Даже после выхода ECMAscrip{filter}t 5 в 2009 году потребовалось несколько лет, чтобы эти новые спецификации получили широкую поддержку браузерами, но большинство разработчиков всё равно писали код в стиле ECMAscrip{filtering}t 3 и не чувствовали необходимости изучать их.
Примечание переводчика: Черновик ECMAscrip{filter}t версии 4 был заброшен, так как он был слишком агрессивным, а Actionscrip{filtering}t 3.0 от Adobe — единственная реализация ECMAscrip{filtering}t edition 4 (Flash почти унифицировал веб)
К 2012 году ситуация внезапно начала меняться. Существует стремление прекратить поддержку старых версий IE, и более реалистично писать код в стиле ECMAscrip{filter}t 5 (ES5). Одновременно запускается новая спецификация ECMAscrip{filtering}t. В этот момент люди начали привыкать описывать различные реализации Javascrip{filtering}t с точки зрения поддержки версий спецификации ECMAscrip{filter}t. Этот новый стандарт изначально назывался ES. Гармония. В 2015 году TC39, комитет, ответственный за разработку проекта спецификации ECMAscrip{filter}t, решил изменить систему определения новых стандартов на один раз в год, что означает, что каждая новая функция может быть добавлена сразу после утверждения, в отличие от того, что предыдущая спецификация завершалась только после завершения полного черновика и выполнения всех функций в порядке. В результате ECMAscrip{filtering}t версии 6 была переименована в ECMAscrip{filtering}t 2015 (ES2015) до публикации в июне.
Всё ещё предлагается множество новых функций или синтаксиса Javascrip{filter}t, включая декораторы, async-await и статические свойства классов. Их часто называют ES7, ES2016 или ES. Далее, но на самом деле их можно назвать только предложениями или возможностями, ведь спецификация ES2016 ещё не завершена, и возможно, что все они будут представлены или ни один из них не будет представлен. TC39 делит предложение на 4 этапа, и вы можете проверить, на какой стадии находится каждое предложение на сайте Babel.
Итак, как же использовать эту кучу терминологии? Следующий список может вам помочь:
- ECMAscrip{filter}t: Язык, стандартизированный ECMA International и контролируемый комитетом TC39. Часто используется для обозначения самого стандарта.
- Javascrip{filtering}t: Самое распространённое название различных реализаций стандарта ECMAscrip{filtering}t. Этот термин не ограничивается конкретной версией спецификации ECMAscrip{filtering}t и может использоваться для любой степени реализации любой версии ECMAscrip{filtering}t.
- ECMAscrip{filtering}t 5 (ES5): Пятое издание ECMAscrip{filtering}t, стандартизированное в 2009 году. Эта спецификация достаточно полностью реализована во всех современных браузерах.
- ECMAscrip{filter}t 6 (ES6) / ECMAscrip{filter}t 2015 (ES2015): Шестое издание ECMAscrip{filtering}t было пересмотрено и стандартизировано в 2015 году. Этот стандарт частично реализован в большинстве современных браузеров. Вы можете ознакомиться с этой таблицей совместимости, чтобы увидеть, как реализованы разные браузеры и инструменты.
- ECMAscrip{filter}t 2016: Ожидаемое седьмое издание редакции ECMAscrip{filter}t, запланированное к выходу следующим летом. Конкретные функции, которые будут включены в эту спецификацию, пока не утверждены окончательно
- ECMAscrip{filter}t Предложения: Предложения по функциям и синтаксису, рассматриваемые для включения в будущие версии стандарта ECMAscrip{filter}t, проходят пять этапов: Strawman, Proposal, Draft, Candidate и Finished.
В этом блоге я буду называть текущую версию ECMAscrip{filtering}t ES6 (потому что именно к ней привыкли большинство разработчиков), спецификацию следующего года — ES2016 (потому что, в отличие от ES6/ES2015, это название будет использоваться на протяжении всего процесса стандартизации), а также будущие языковые концепции, которые ещё не окончательно утверждены или не разработаны предложения ECMAscrip{filtering}t или Javascrip{filter}t proposal. Я постараюсь следовать этой статье при любых случаях, которые могут вызвать путаницу.