stringtranslate.com

ECMAScript

ECMAScript ( / ˈ ɛ k m ə s k r ɪ p t / ; ES ) [1] — стандарт для языков сценариев, включая JavaScript , JScript и ActionScript . Он наиболее известен как стандарт JavaScript, предназначенный для обеспечения совместимости веб -страниц в различных веб-браузерах . [2] Он стандартизирован Ecma International в документе ECMA-262.

ECMAScript обычно используется для написания сценариев на стороне клиента во Всемирной паутине , и он все чаще используется для серверных приложений и сервисов, использующих среды выполнения — Node.js , [3] deno [4] и Bun . [5]

ECMAScript, ECMA-262, JavaScript

ECMA-262 , или Спецификация языка ECMAScript , определяет язык ECMAScript или просто ECMAScript . [6] ECMA-262 определяет только синтаксис языка и семантику основного интерфейса прикладного программирования ( API ), такого как Array , Function и globalThis , в то время как действительные реализации JavaScript добавляют свои собственные функции, такие как ввод/вывод и обработка файловой системы. .

История

Спецификация ECMAScript — это стандартизированная спецификация языка сценариев, разработанная Бренданом Эйхом из Netscape ; первоначально назывался Mocha, затем LiveScript и, наконец, JavaScript. [7] В декабре 1995 года Sun Microsystems и Netscape объявили о JavaScript в пресс-релизе. [8] В ноябре 1996 года Netscape объявила о встрече организации по стандартизации Ecma International , посвященной продвижению стандартизации JavaScript. [9] Первое издание ECMA-262 было принято Генеральной ассамблеей Ecma в июне 1997 года. С тех пор было опубликовано несколько редакций языкового стандарта. Название «ECMAScript» было компромиссом между организациями, занимавшимися стандартизацией языка, особенно Netscape и Microsoft, чьи споры доминировали на первых сессиях по стандартизации. Эйх прокомментировал, что «ECMAScript всегда был нежелательным торговым названием, которое звучало как кожное заболевание ». [10] ECMAScript был формализован посредством операционной семантики в результате работы Стэнфордского университета и факультета вычислительной техники Имперского колледжа Лондона для анализа безопасности и стандартизации. [11] До 1994 года «ECMA» означало «Европейскую ассоциацию производителей компьютеров».

История версий

Функции

Язык ECMAScript включает структурированные , динамические , функциональные и основанные на прототипах функции. [12]

Императивный и структурированный

ECMAScript JavaScript поддерживает структурированное программирование в стиле C. Раньше JavaScript поддерживал определение области действия функции только с помощью ключевого слова var, но в ECMAScript 2015 были добавлены ключевые слова letи const, что позволило JavaScript поддерживать как область действия блока, так и область действия функции. JavaScript поддерживает автоматическую вставку точки с запятой . Это означает, что точки с запятой, которые обычно завершают оператор в C, могут быть опущены в JavaScript. [13]

Как и в языках стиля C, поток управления осуществляется с помощью операторов while, for, do/ while, if/ elseи switch. Функции слабо типизированы и могут принимать и возвращать любой тип. Аргументы не предоставлены по умолчанию для undefined.

Слабо типизированный

ECMAScript слабо типизирован . Это означает, что определенные типы назначаются неявно в зависимости от выполняемой операции. Однако в реализации преобразования переменной из одного типа в другой в JavaScript есть несколько особенностей. Эти причуды стали темой доклада под названием «Ват» . [14] [15]

Динамический

ECMAScript является динамически типизированным. Таким образом, тип связан со значением, а не с выражением. ECMAScript поддерживает различные способы проверки типа объектов, включая утиный ввод . [16]

Транспиляция

Начиная с ES 2015, транспиляция JavaScript стала очень распространенной. Транспиляция — это компиляция из исходного кода в исходный код , в которой используются новые версии JavaScript, а транспилятор переписывает исходный код так, чтобы он поддерживался старыми браузерами. Обычно транспиляторы переходят на ES3, чтобы обеспечить совместимость со всеми версиями браузеров. Параметры переноса в конкретную версию можно настроить по мере необходимости. Транспиляция добавляет дополнительный шаг в процесс сборки и иногда выполняется для того, чтобы избежать необходимости использования полифилов . Полифиллы создают новые функции для старых сред, в которых их нет. Полифиллы делают это во время выполнения в интерпретаторе, например в браузере пользователя или на сервере. Вместо этого транспиляция переписывает сам код ECMA на этапе сборки, прежде чем он достигнет интерпретатора.

Соответствие

В 2010 году Ecma International начала разработку стандартного теста для Ecma 262 ECMAScript. [17] Test262 — это набор тестов на соответствие ECMAScript, который можно использовать для проверки того, насколько точно реализация JavaScript соответствует спецификации ECMAScript. Набор тестов содержит тысячи отдельных тестов, каждый из которых проверяет некоторые конкретные требования спецификации ECMAScript. Разработка Test262 является проектом Технического комитета 39 Ecma (TC39). Структура тестирования и отдельные тесты предоставлены Ecma организациями-членами TC39.

Важный вклад внесли Google ( набор тестов Sputnik ) и Microsoft, которые предоставили тысячи тестов. Набор тестов Test262 состоял из38 014 тестов по состоянию на январь 2020 года . [18] Спецификации ECMAScript через ES7 хорошо поддерживаются в основных веб-браузерах . В таблице ниже показан уровень соответствия текущих версий программного обеспечения самым последним выпускам ECMAScript.

Смотрите также

Рекомендации

  1. ^ Стефанов, Стоян (2010). Шаблоны JavaScript. О'Рейли Медиа, Инк. с. 5. ISBN 9781449396947. Архивировано из оригинала 10 июня 2016 г. Проверено 12 января 2016 г. Основной язык программирования JavaScript [...] основан на стандарте ECMAScript , или сокращенно ES.
  2. ^ Вирфс-Брок, Аллен; Эйх, Брендан (02 мая 2020 г.). «JavaScript: первые 20 лет». Труды ACM по языкам программирования . 4 : 1–189. дои : 10.1145/3386327 . S2CID  219603695.{{cite journal}}: CS1 maint: дата и год ( ссылка )
  3. ^ https://nodejs.org/en/docs/es6
  4. ^ https://www.infoworld.com/article/3644460/deno-joins-javascript-standards-effort.html.
  5. ^ https://bun.sh/docs#:~:text=or%2C%20more%20formally%2C-,ECMAScript,-)%20is%20just%20a булочка
  6. ^ Го, Шу-юй (14 февраля 2022 г.). «Спецификация языка ECMAScript® 2022». tc39.es . Tc39.es. Архивировано из оригинала 8 мая 2020 г. Проверено 14 февраля 2022 г.
  7. ^ Криль, Пол (23 июня 2008 г.). «Создатель JavaScript размышляет о прошлом и будущем». infoworld.com . ИнфоМир. Архивировано из оригинала 20 сентября 2014 г. Проверено 31 октября 2013 г.
  8. ^ «Netscape и Sun анонсируют JavaScript, открытый кроссплатформенный язык объектных сценариев для корпоративных сетей и Интернета» . Netscape.com . Нетскейп. 04.12.1995. Архивировано из оригинала 6 июня 2002 г. Проверено 4 ноября 2019 г.
  9. ^ Пресс-релиз (15 ноября 1996 г.). «Лидеры отрасли будут продвигать стандартизацию JavaScript Netscape на заседании органа по стандартизации». Netscape.com . Нетскейп. Архивировано из оригинала 3 декабря 1998 г. Проверено 31 октября 2013 г.
  10. ^ Эйх, Брендан (3 октября 2006 г.). «Будет ли предложенный суффикс файла для es4?». сайт mozilla.org . Mail.mozilla.org. Архивировано из оригинала 21 июня 2020 г. Проверено 5 мая 2021 г.
  11. ^ Маффейс, Серджио; Митчелл, Джон К.; Тали, Анкур (3 января 2020 г.). «Операционная семантика JavaScript» (PDF) . Стэнфорд.edu . Ассоциация вычислительной техники . Архивировано (PDF) из оригинала 3 января 2020 г. Проверено 3 января 2020 г.
  12. ^ «О» . ECMAScript. Архивировано из оригинала 2 августа 2012 г. Проверено 17 декабря 2009 г.
  13. Дэвид Фланаган (17 августа 2006 г.). JavaScript: Полное руководство: Полное руководство. «О'Рейли Медиа, Инк.». п. 16. ISBN 978-0-596-55447-7. Архивировано из оригинала 1 августа 2020 года . Проверено 11 ноября 2019 г.
  14. ^ Бернхардт, Гэри. Wat. CodeMash 2012. Уничтожить все программное обеспечение . Архивировано из оригинала 28 октября 2019 г. Проверено 18 августа 2021 г.
  15. Гилбертсон, Скотт (26 января 2012 г.). «Шутки для ботаников: какие моменты в программировании». Проводной . Архивировано из оригинала 23 августа 2020 года . Проверено 22 августа 2021 г.
  16. ^ «Типы данных и структуры данных JavaScript – JavaScript | MDN» . Developer.mozilla.org . 16 февраля 2017 г. Архивировано из оригинала 14 марта 2017 г. Проверено 24 февраля 2017 г.
  17. ^ «Язык ECMAScript - test262» . Test262.ecmascript.org. Архивировано из оригинала 14 мая 2011 г. Проверено 31 октября 2013 г.
  18. ^ "tc39/test262". Гитхаб . 24 января 2020 года. Архивировано из оригинала 1 октября 2019 года . Проверено 29 января 2020 г.
  19. ^ ES5 является базовым для этого набора тестов. Уровень соответствия для других выпусков отражает поддержку только новых функций, а не полную оценку.
  20. ^ «Таблица совместимости ECMAScript 5» . kangax.github.io . Архивировано из оригинала 19 ноября 2018 г. Проверено 8 ноября 2018 г.
  21. ^ «Таблица совместимости ECMAScript 6» . kangax.github.io . Архивировано из оригинала 17 ноября 2018 г. Проверено 8 ноября 2018 г.
  22. ^ ab «Таблица совместимости ECMAScript 2016+». kangax.github.io . Архивировано из оригинала 24 ноября 2018 г. Проверено 8 ноября 2018 г.
  23. ^ Составная оценка, включающая новые функции от ES7 до черновиков следующей редакции.