Эта статья нуждается в обновлении . Июнь 2020 г. ) ( |
Парадигма | Мультипарадигма : основанная на прототипах , функциональная , императивная |
---|---|
Разработано | Брендан Эйх , Ecma International |
Впервые появился | 1997 |
Печатная дисциплина | слабый , динамичный |
Веб-сайт | www |
Основные реализации | |
JavaScript , SpiderMonkey , V8 , ActionScript , JScript , QtScript , InScript , Скрипт Google Apps | |
Под влиянием | |
Самостоятельная работа , HyperTalk , AWK , C , CoffeeScript , Perl , Python , Java , Scheme |
Расширения имени файла | .es |
---|---|
Тип интернет-СМИ | приложение / ecmascript |
Разработано | Sun Microsystems , Ecma International |
Первый выпуск | Июнь 1997 г . |
Последний релиз | Выпуск 11 (июнь 2020 г . ) |
Тип формата | Язык сценариев |
Веб-сайт | ECMA-262 , ECMA-290 , ECMA-327 , ECMA-357 , ECMA-402 |
ECMAScript ( / ɛ к м ə ы к т ɪ р т / ) (или ES ) [1] является языком программирования общего назначения , стандартизирован Ecma International согласно документу ECMA-262 . Это стандарт JavaScript, предназначенный для обеспечения взаимодействия веб-страниц в разных веб-браузерах. [2] ECMAScript обычно используется для написания сценариев на стороне клиента во всемирной паутине.И он все чаще используется для написания серверных приложений и услуг с использованием Node.js .
ECMAScript, ECMA-262 и JavaScript [ править ]
ECMA-262 или спецификация языка ECMAScript определяет язык ECMAScript или просто ECMAScript (он же JavaScript ). [3] ECMA-262 определяет только синтаксис языка и семантику основного API , например Array , Function и globalThis , в то время как допустимые реализации JavaScript добавляют свои собственные функции, такие как ввод / вывод или обработка файловой системы.
История [ править ]
Спецификация ECMAScript - это стандартизированная спецификация языка сценариев, разработанная Бренданом Эйхом из Netscape ; первоначально назывался Mocha, затем LiveScript и, наконец, JavaScript. [4] В декабре 1995 года Sun Microsystems и Netscape объявили о JavaScript в пресс-релизе. [5] В ноябре 1996 года Netscape объявила о собрании организации по стандартизации Ecma International для продвижения стандартизации JavaScript. [6]Первая редакция стандарта ECMA-262 была принята Генеральной ассамблеей Ecma в июне 1997 года. С тех пор было опубликовано несколько редакций языкового стандарта. Название «ECMAScript» было компромиссом между организациями, занимающимися стандартизацией языка, особенно Netscape и Microsoft, чьи споры доминировали на ранних сессиях стандартизации. Эйх прокомментировал, что «ECMAScript всегда был нежелательной торговой маркой, которая звучит как кожная болезнь ». [7] ECMAScript была формализована посредством операционной семантики по работе в Стэнфордском университете и кафедры вычислительной техники , Imperial College London для анализа безопасности и стандартизации. [8]
Версии [ править ]
Опубликованы одиннадцать выпусков ECMA-262. Работа над версией 11 стандарта была завершена в июне 2020 г. [9]
Версия | Дата публикации | Имя | Изменения по сравнению с предыдущей редакцией | редактор |
---|---|---|---|---|
1 | Июнь 1997 г. | Первое издание | Гай Л. Стил мл. | |
2 | Июнь 1998 г. | Редакционные изменения, чтобы спецификация полностью соответствовала международному стандарту ISO / IEC 16262. | Майк Коулишоу | |
3 | Декабрь 1999 г. | Добавлены регулярные выражения , улучшенная обработка строк, новые управляющие операторы, обработка исключений try / catch, более точное определение ошибок, форматирование для числового вывода и другие улучшения. | Майк Коулишоу | |
4 | Заброшен (последний проект 30 июня 2003 г.) | От четвертого издания отказались из-за политических разногласий относительно языковой сложности. Многие функции, предложенные для четвертого издания, были полностью исключены; некоторые были включены в шестое издание. | ||
5 | Декабрь 2009 г. | Добавляет «строгий режим», подмножество, предназначенное для обеспечения более тщательной проверки ошибок и предотвращения подверженных ошибкам конструкций. Разъясняет многие двусмысленности в спецификации 3-го издания и учитывает поведение реальных реализаций, которые постоянно отличались от этой спецификации. Добавляет некоторые новые функции, такие как методы получения и установки, поддержку библиотеки для JSON и более полное отражение свойств объекта. [10] | Пратап Лакшман, Аллен Вирфс-Брок | |
5.1 | Июнь 2011 г. | Эта редакция 5.1 стандарта ECMAScript полностью соответствует третьей редакции международного стандарта ISO / IEC 16262: 2011. | Пратап Лакшман, Аллен Вирфс-Брок | |
6 | Июнь 2015 [11] | ECMAScript 2015 (ES2015) | См. 6-е издание - ECMAScript 2015 | Аллен Вирфс-Брок |
7 | Июнь 2016 [12] | ECMAScript 2016 (ES2016) | См. 7-е издание - ECMAScript 2016 | Брайан Терлсон |
8 | Июнь 2017 [13] | ECMAScript 2017 (ES2017) | См. 8-е издание - ECMAScript 2017 | Брайан Терлсон |
9 | Июнь 2018 [14] | ECMAScript 2018 (ES2018) | См. 9-е издание - ECMAScript 2018 | Брайан Терлсон |
10 | Июнь 2019 [15] | ECMAScript 2019 (ES2019) | См. 10-е издание - ECMAScript 2019 | Брайан Терлсон, Брэдли Фариас, Джордан Харбанд |
11 | Июнь 2020 [9] | ECMAScript 2020 (ES2020) | См. 11-е издание - ECMAScript 2020 | Джордан Харбанд, Кевин Смит |
В июне 2004 года Ecma International опубликовала стандарт ECMA-357, определяющий расширение ECMAScript, известное как ECMAScript for XML (E4X). Ecma также определила «компактный профиль» для ECMAScript, известный как ES-CP или ECMA 327, который был разработан для устройств с ограниченными ресурсами, который был отозван в 2015 году [16].
4-е издание (заброшенное) [ править ]
Предлагаемое четвертое издание ECMA-262 ( ECMAScript 4 или ES4 ) было бы первым крупным обновлением ECMAScript с момента публикации третьего издания в 1999 году. Спецификацию (вместе с эталонной реализацией) изначально планировалось завершить к октябрю 2008 года. [17] Первый проект был датирован февралем 1999 г. [18] Обзор языка был выпущен рабочей группой 23 октября 2007 г. [19]
К августу 2008 года предложение 4-й редакции ECMAScript было преобразовано в проект под кодовым названием ECMAScript Harmony . Обсуждаемые в то время функции Harmony включали:
- классы ,
- модульная система ,
- необязательные аннотации типов и статическая типизация , возможно, с использованием системы структурных типов ,
- генераторы и итераторы ,
- назначение деструктуризации , и
- алгебраические типы данных .
Эти функции частично предназначались для лучшей поддержки программирования в целом и для того, чтобы позволить частично пожертвовать способностью сценария быть динамичным для повышения производительности. Например, Tamarin - виртуальная машина для ActionScript, разработанная Adobe с открытым исходным кодом - поддерживает JIT -компиляцию для определенных классов скриптов.
В дополнение к введению новых функций, некоторые ошибки ES3 было предложено исправить в версии 4. [20] [21] Эти и другие исправления, а также поддержка кодирования / декодирования JSON были включены в спецификацию ECMAScript, 5th Edition. [22]
Работа над выпуском 4 началась после завершения спецификации ES-CP (Compact Profile) и продолжалась примерно 18 месяцев, когда был достигнут медленный прогресс в уравновешивании теории спецификации Netscape JavaScript 2 с опытом реализации Microsoft JScript .NET. Через некоторое время акцент сместился на стандарт ECMAScript for XML (E4X). Обновление не обошлось без разногласий. В конце 2007 года дебаты между Эйхом, позже техническим директором Mozilla Foundation , и Крисом Уилсоном , разработчиком платформы Microsoft для Internet Explorer , стали общедоступными в ряде блогов.. Уилсон предупредил, что, поскольку предложенные изменения в ECMAScript сделали его обратно несовместимым в некоторых отношениях с более ранними версиями языка, обновление составило «нарушение Интернета» [23], а заинтересованные стороны, которые выступали против изменений, были «скрыты от просмотра». . [24] Эйх ответил, заявив, что Уилсон, похоже, «повторяет ложь в блогах», и отрицал попытки подавить инакомыслие и призвал критиков привести конкретные примеры несовместимости. [25] Он отметил, что Microsoft Silverlight и Adobe AIR полагаются на C # и ActionScript 3 соответственно, которые больше и сложнее, чем ECMAScript Edition 3.[26]
5-е издание [ править ]
Yahoo, Microsoft, Google и другие несогласные с 4-м изданием сформировали свой собственный подкомитет для разработки менее амбициозного обновления ECMAScript 3, предварительно названного ECMAScript 3.1. В этом выпуске основное внимание будет уделено обновлениям безопасности и библиотек с большим упором на совместимость. После вышеупомянутого публичного спарринга команды ECMAScript 3.1 и ECMAScript 4 договорились о компромиссе: над двумя редакциями будет работать параллельно, при координации между командами, чтобы гарантировать, что ECMAScript 3.1 останется строгим подмножеством ECMAScript 4 как в семантике, так и в синтаксис.
Однако различия в философии в каждой команде приводили к неоднократным нарушениям правила подмножества, и оставалось сомнительным, что несогласные с ECMAScript 4 когда-либо будут поддерживать или внедрять ECMAScript 4 в будущем. Спустя более года после разногласий по поводу будущего ECMAScript в Техническом комитете Ecma 39, две команды достигли нового компромисса в июле 2008 года: Брендан Эйх объявил, что Ecma TC39 сосредоточит свою работу на ECMAScript 3.1 (позже переименованной в ECMAScript, 5th. Edition) при полном сотрудничестве всех сторон, а поставщики планируют к началу 2009 г. как минимум две совместимые реализации. [27] [28]В апреле 2009 года Ecma TC39 опубликовала «окончательный» проект 5-го издания и объявила, что тестирование совместимых реализаций должно быть завершено к середине июля. [29] 3 декабря 2009 г. было опубликовано пятое издание ECMA-262. [30]
6-е издание - ECMAScript 2015 [ править ]
Шестое издание, ECMAScript 6 ( ES6 ), а затем переименованное в ECMAScript 2015, было завершено в июне 2015 года. [11] [31] Это обновление добавляет значительный новый синтаксис для написания сложных приложений, включая объявления классов ( ), модули ES6 вроде , но определяет их семантически в тех же терминах, что и строгий режим ECMAScript 5. Другие новые функции включают итераторы и циклы, генераторы в стиле Python , выражение стрелочной функции ( ), ключевое слово для локальных объявлений, ключевое слово для локальных объявлений констант, двоичные данные, типизированные массивы, новые коллекции (карты, наборы и WeakMap), обещанияclass Foo { ... }
import * as moduleName from "..."; export const Foo
for...of
() => {...}
let
const
, числовые и математические улучшения, отражение, прокси (метапрограммирование для виртуальных объектов и оболочек) и литералы шаблонов для строк. [32] [33] Полный список обширен. [34] [35] Как первая спецификация «ECMAScript Harmony», она также известна как «ES6 Harmony».
7-е издание - ECMAScript 2016 [ править ]
7-е издание, или ECMAScript 2016, было завершено в июне 2016 года. [12] Его функции включают в себя блочное определение переменных и функций, шаблоны деструктуризации (переменных), правильные хвостовые вызовы, оператор возведения в степень **
для чисел await
, async
ключевые слова для асинхронного программирования, и Array.prototype.includes
функция. [12] [36]
Оператор возведения в степень эквивалентен Math.pow
, но обеспечивает более простой синтаксис, аналогичный таким языкам, как Python, F #, Perl и Ruby. async
/ await
был провозглашен более простым способом использования обещаний и разработки асинхронного кода.
8-е издание - ECMAScript 2017 [ править ]
Восьмое издание, или ECMAScript 2017, было завершено в июне 2017 года. [13] Его функции включают функции Object.values
, Object.entries
и Object.getOwnPropertyDescriptors
для простого управления объектами, async/await
конструкции, использующие генераторы и обещания, а также дополнительные функции для параллелизма и атомики . [37] [13]
9-е издание - ECMAScript 2018 [ править ]
9-е издание, или ECMAScript 2018, было завершено в июне 2018 года. [14] Новые функции включают оператор распространения, параметры отдыха, асинхронную итерацию Promise.prototype.finally
и дополнения к RegExp. [14]
Оператор распространения позволяет легко копировать свойства объекта, как показано ниже.
let object = { a : 1 , b : 2 }пусть objectClone = Объект . assign ({}, object ) // до ES9 let objectClone = {... object } // синтаксис ES9let otherObject = { c : 3 , ... объект } console . log ( otherObject ) // -> {c: 3, a: 1, b: 2}
10-е издание - ECMAScript 2019 [ править ]
10-е издание, или ECMAScript 2019, было опубликовано в июне 2019 года. [15] Добавленные функции включают, помимо прочего Array.prototype.flat
, Array.prototype.flatMap
изменения в Array.sort
и Object.fromEntries
. [15]
Array.sort
теперь гарантированно стабильна, что означает, что элементы с одинаковым приоритетом сортировки будут отображаться в том же порядке в отсортированном массиве. Array.prototype.flat(depth=1)
выравнивает массив до указанной глубины, что означает, что все элементы подмассива (до указанной глубины) рекурсивно объединяются.
11-е издание - ECMAScript 2020 [ править ]
11 - е издание, или ECMAScript 2020, был опубликован в июне 2020 г. [9] В дополнение к новым функциям, эта версия представляет BigInt
примитивный тип для произвольного размера целых чисел, nullish сливающихся оператора , а globalThis объекта . [9]
BigInts создаются либо с помощью BigInt
конструктора, либо с помощью синтаксиса 10n
, где «n» ставится после числового литерала. BigInts допускает представление и управление целыми числами за пределами Number.MAX_SAFE_INTEGER
, в то время как числа представлены 64-битным значением двойной точности IEEE 754 . Встроенные функции Math
несовместимы с BigInts; например, возведение в степень BigInts должно выполняться с помощью **
оператора вместо Math.pow
.
Оператор объединения, равный нулю, ??
возвращает свой правый операнд, если его левая часть равна null
или undefined
. Это контрастирует с ||
оператором, который возвращал бы "string"
все "ложные" значения, такие как приведенные ниже.
undefined ?? "строка" // -> "строка" null ?? "строка" // "строка" ложь ?? "строка" // -> ложь NaN ?? "строка" // -> NaN
Необязательная цепочка позволяет получить доступ к вложенным свойствам объекта без проверки И на каждом уровне.
Пример такой const zipcode = person?.address?.zipcode
. Если какой-либо из свойств нет, zipcode
будет undefined
.
ES.Next [ править ]
ES.Next - это динамическое имя, которое относится к следующей версии на момент написания. Функции ES.Next включают готовые предложения (также известные как «предложения стадии 4»), перечисленные в готовых предложениях , которые не являются частью утвержденной спецификации. Языковой комитет следует модели «живой спецификации», поэтому эти изменения являются частью стандарта, а ратификация - формальностью. [ необходима цитата ]
Особенности [ править ]
Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( Февраль 2017 г. ) |
Язык ECMAScript включает в себя структурированные , динамические , функциональные и основанные на прототипах функции. [38]
Императивная и структурированная [ править ]
ECMAScript JavaScript поддерживает структурированное программирование в стиле C. Ранее JavaScript поддерживается только функция область видимости , используя ключевое слово var
, но ECMAScript 2015 добавлены ключевые слова let
и const
позволяя JavaScript , чтобы поддерживать как блок рамочный и функции области видимости. JavaScript поддерживает автоматическую вставку точки с запятой , что означает, что точки с запятой, которые обычно используются для завершения оператора в C, могут быть опущены в JavaScript. [39]
Как языки C-типа, управление потоком осуществляется с while
, for
, do/while
, if/else
и switch
заявления. Функции слабо типизированы и могут принимать и возвращать любой тип. Аргументы не предоставлены по умолчанию undefined
.
Слабо типизированный [ править ]
ECMAScript слабо типизирован . Это означает, что определенные типы присваиваются неявно в зависимости от выполняемой операции. Однако в реализации JavaScript преобразования переменной из одного типа в другой есть несколько причуд. Эти причуды вызвали критику со стороны многих разработчиков. [ необходима цитата ]
Динамический [ править ]
ECMAScript динамически типизирован. Таким образом, тип связан со значением, а не выражением. ECMAScript поддерживает различные способы проверки типа объектов, включая утиную печать . [40]
Транспортировка [ править ]
Начиная с ES 2015, перенос JavaScript стал очень распространенным явлением. Транспиляция - это компиляция из исходного кода в исходный, в которой используются более новые версии JavaScript, а транспилятор переписывает исходный код таким образом, чтобы он поддерживался старыми браузерами. Обычно транспилеры переходят на ES3, чтобы поддерживать совместимость со всеми версиями браузеров. Параметры для переноса в конкретную версию могут быть настроены в соответствии с потребностями. Транспилирование добавляет дополнительный шаг к процессу сборки и иногда выполняется, чтобы избежать необходимости полифиллов.. Полифиллы создают новые функции для старых сред, в которых они отсутствуют. Полифиллы делают это во время выполнения в интерпретаторе, например в браузере пользователя или на сервере. Вместо этого транспилирование перезаписывает сам код ECMA на этапе сборки разработки, прежде чем он попадет в интерпретатор.
Соответствие [ править ]
В 2010 году Ecma International начала разработку стандартного теста для Ecma 262 ECMAScript. [41] Test262 - это набор тестов на соответствие ECMAScript, который можно использовать для проверки того, насколько точно реализация JavaScript соответствует спецификации ECMAScript. Набор тестов содержит тысячи отдельных тестов, каждый из которых проверяет определенные требования спецификации ECMAScript. Разработка Test262 является проектом Технического комитета Ecma 39 (TC39). Структура тестирования и отдельные тесты созданы организациями-членами TC39 и переданы в Ecma для использования в Test262.
Важный вклад внесли Google (набор тестов Sputnik) и Microsoft, которые предоставили тысячи тестов. Набор тестов Test262 состоял из38 014 тестов по состоянию на январь 2020 года [Обновить]. [42] Спецификации ECMAScript через ES7 хорошо поддерживаются в основных веб-браузерах . В таблице ниже показан уровень соответствия для текущих версий программного обеспечения по отношению к самым последним выпускам ECMAScript.
Движок сценариев | Справочное приложение (я) | Соответствие [43] | |||
---|---|---|---|---|---|
ES5 [44] | ES6 (2015) [45] | ES7 (2016) [46] | Новее (2017+) [46] [47] | ||
Чакра | Microsoft Edge 18 | 100% | 96% | 100% | 33% |
ПаукОбезьяна | Firefox 79 | 100% | 98% | 100% | 100% |
V8 | Google Chrome 84, Microsoft Edge 84, Opera 70 | 100% | 98% | 100% | 100% |
JavaScriptCore | Safari 13.1 | 99% | 99% | 100% | 84% |
См. Также [ править ]
- Сравнение движков JavaScript
- ECMAScript для XML (E4X)
- JavaScript
- JScript
- Список движков ECMAScript
Ссылки [ править ]
- ^ Стефанов, Стоян (2010). Шаблоны JavaScript . O'Reilly Media, Inc. стр. 5. ISBN 9781449396947. Проверено 12 января 2016 .
Основной язык программирования [...] JavaScript основан на стандарте ECMAScript , сокращенно ES.
- ^ Wirfs-Brock, Аллен; Айх, Брендан (2020). «JavaScript: первые 20 лет» . Труды ACM по языкам программирования . 4 : 1–189. DOI : 10.1145 / 3386327 . S2CID 219603695 .
- ^ https://tc39.es/ecma262/
- ^ Крил, Пол (2008-06-23). «Создатель JavaScript задумывается о прошлом, будущем» . InfoWorld . Проверено 31 октября 2013 .
- ^ «Netscape и Sun анонсируют JavaScript, открытый кроссплатформенный язык сценариев объектов для корпоративных сетей и Интернета» . Netscape. 1995-12-04. Архивировано из оригинала на 2002-06-06 . Проверено 4 ноября 2019 .
- ^ «Лидеры отрасли по продвижению стандартизации JavaScript Netscape на собрании органа по стандартизации» . Netscape. 15 ноября, 1996. Архивировано из оригинала на 1998-12-03 . Проверено 31 октября 2013 .
- ^ "Будет ли предложен суффикс файла для es4?" . Mail.mozilla.org. 2006-10-03 . Проверено 31 октября 2013 .
- ^ Maffeis, Серджио; Митчелл, Джон С .; Талы, Анкур. «Операционная семантика для JavaScript» (PDF) . Ассоциация вычислительной техники .
- ^ a b c d «Спецификация языка ECMAScript 2020» . Ecma International . Июнь 2020.
- ^ «Изменения в JavaScript, часть 1: EcmaScript 5» . YouTube. 2009-05-18 . Проверено 31 октября 2013 .
- ^ a b «Спецификация языка ECMAScript 2015» . Ecma International . Июнь 2015 г.
- ^ a b c «Спецификация языка ECMAScript 2016» . Ecma International . Июнь 2016 г.
- ^ a b c «Спецификация языка ECMAScript 2017» . Ecma International . Июнь 2017 г.
- ^ a b c «Спецификация языка ECMAScript 2018» . Ecma International . Июнь 2018 г.
- ^ a b c «Спецификация языка ECMAScript 2019» . Ecma International . Июнь 2019.
- ^ 2015-03-24 Заметки о встрече . ESDiscuss. См. Также отмененные стандарты Ecma . ECMA.
- ^ "Выпущен обзорный документ ES4" . Mail.mozilla.org . Проверено 31 октября 2013 .
- ^ «Настоящая история ECMAScript 4» .
- ^ «Предлагаемое 4-е издание ECMAScript - Обзор языка» (PDF) . ecmascript.org . 23 октября 2007 г. Архивировано из оригинального (PDF) 13 июля 2010 г.
- ^ Джон Ресиг. «Джон Ресиг - Исправления ошибок в JavaScript 2» . Ejohn.org . Проверено 31 октября 2013 .
- ^ «Совместимость между ES3 и предлагаемым ES4» (PDF) . Ecmascript.org. Архивировано из оригинального (PDF) 24 июля 2014 года . Проверено 31 октября 2013 .
- ^ «Спецификация языка ECMAScript» (PDF) . Ecma International . 2009-04-19. Архивировано из оригинального (PDF) 19 апреля 2009 года . Проверено 19 марта 2018 .
- ^ «ECMAScript 3 и выше - IEBlog - Домашняя страница сайта - MSDN Blogs» . Blogs.msdn.com. 2007-10-30 . Проверено 31 октября 2013 .
- ^ «Что я думаю о ES4. - Альбатрос! - Домашняя страница - Блоги MSDN» . Blogs.msdn.com. 2007-10-31 . Проверено 31 октября 2013 .
- ^ «Открытое письмо Крису Уилсону» . Брендан Эйх. 2007-10-31 . Проверено 31 октября 2013 .
- ^ «JavaScript 2 и открытый Интернет» . 2007-11-20 . Проверено 20 января 2014 .
- ^ "Гармония ECMAScript" . Mail.mozilla.org . Проверено 31 октября 2013 .
- ^ «Важная веха в стандартизации JavaScript - Блог JScript - Домашняя страница сайта - Блоги MSDN» . Blogs.msdn.com. 2009-04-09 . Проверено 31 октября 2013 .
- ^ "Ecma International завершает основную редакцию ECMAScript" . Ecma International. 2009-04-09 . Проверено 22 мая 2009 .
- ^ "Предыдущие новости Ecma" . Ecma-international.org . Проверено 29 марта 2020 .
- ^ Криль, Пол. «Официально: ECMAScript 6 одобрен» . InfoWorld . Проверено 19 марта 2018 .
- ^ «5 замечательных функций в EcmaScript 6 (ES6 Harmony) - Wintellect» . Wintellect . 2014-03-24. Архивировано из оригинала на 2017-07-22 . Проверено 19 марта 2018 .
- ^ «ECMAScript 6 (ES6): что нового в следующей версии JavaScript» . Smashing Magazine . 2015-10-28 . Проверено 19 марта 2018 .
- ^ «ECMAScript 6: Новые возможности: обзор и сравнение» . es6-features.org . Проверено 19 марта 2018 .
- ^ «Стандартный ECMA-262, 6-е издание / июнь 2015 г. Спецификация языка ECMAScript 2015 14.2. Определения стрелочных функций» . www.ecma-international.org . 2015 г.
- ^ Сабофф, Майкл (2016-05-23). «Правильные хвостовые вызовы ECMAScript 6 в WebKit» . WebKit . Проверено 11 апреля 2019 .
- ^ «ECMAScript 2017 (ES8): последний набор функций» . 2ality . Проверено 23 апреля 2018 .
- ^ "О" . ECMAScript. Архивировано из оригинала на 2012-08-02 . Проверено 17 декабря 2009 .
- ↑ Дэвид Фланаган (17 августа 2006 г.). JavaScript: Полное руководство: Полное руководство . "O'Reilly Media, Inc.". п. 16. ISBN 978-0-596-55447-7.
- ^ "Типы данных и структуры данных JavaScript - JavaScript | MDN" . Developer.mozilla.org . 2017-02-16 . Проверено 24 февраля 2017 .
- ^ «Язык ECMAScript - test262» . Test262.ecmascript.org. Архивировано из оригинала на 2011-05-14 . Проверено 31 октября 2013 .
- ^ "tc39 / test262" . GitHub . 24 января 2020 . Проверено 29 января 2020 года .
- ^ ES5 является базовым для этого набора тестов. Уровень соответствия для других выпусков отражает только поддержку новых функций, а не полную оценку.
- ^ "Таблица совместимости ECMAScript 5" . kangax.github.io . Проверено 8 ноября 2018 .
- ^ "Таблица совместимости ECMAScript 6" . kangax.github.io . Проверено 8 ноября 2018 .
- ^ a b «Таблица совместимости ECMAScript 2016+» . kangax.github.io . Проверено 8 ноября 2018 .
- ^ Составная партитура, включающая новые функции от ES7 до черновиков следующего издания
Внешние ссылки [ править ]
Стандарты ISO [ править ]
- ISO 16262
Стандарты ECMA [ править ]
- ECMA-262
- ECMA-262 Спецификация языка ECMAScript, 3-е издание (декабрь 1999 г.)
- Спецификация языка ECMAScript, выпуск 3, финал, 24 марта 00 г.
- 4-е издание (обзор): PDF
- 4-е издание (окончательный вариант): HTML , PDF
- ECMA-262 Спецификация языка ECMAScript, 5-е издание (декабрь 2009 г.)
- Версия 5.1 / июнь 2011 г .: HTML , PDF
- 6-е издание / июнь 2015 г. (спецификация языка ECMAScript 2015): HTML , PDF
- 7-е издание / июнь 2016 г. (спецификация языка ECMAScript 2016): HTML , PDF
- 8-е издание, июнь 2017 г. (спецификация языка ECMAScript 2017): HTML , PDF
- 9-е издание, июнь 2018 г. (спецификация языка ECMAScript 2018): HTML , PDF
- 10-е издание, июнь 2019 г. (спецификация языка ECMAScript 2019): HTML , PDF
- ECMA-290 Спецификация компонентов ECMAScript (июнь 1999 г.)
- ECMA-327 ECMAScript 3rd Edition Compact Profile (июнь 2001 г.)
- ECMA-357 ECMAScript for XML (E4X) Specification (июнь 2004 г.)