ECMAScript
Парадигма | Мультипарадигмальность : прототипная , функциональная , императивная. |
---|---|
Разработано | Брендан Эйх , Ecma International |
Впервые появился | 1997 год |
Дисциплина набора текста | слабый , динамичный |
Веб-сайт | www |
Основные реализации | |
JavaScript , ActionScript , JScript , QtScript , InScript , скрипт Google Apps | |
Под влиянием | |
Self , HyperTalk , AWK , C , CoffeeScript , Perl , Python , Java , Scheme |
Расширения имен файлов | .является |
---|---|
Тип интернет-СМИ | приложение/экмаскрипт |
Разработано | Сан Микросистемс , Экма Интернэшнл |
Первоначальный выпуск | июнь 1997 г |
Последний выпуск | Выпуск 14 июнь 2023 г |
Тип формата | Язык сценариев |
Веб-сайт | Стандарты |
ECMAScript ( / ˈ ekm s k r k ɪ p t / / ; ES ) [1] — это стандарт для языков сценариев, включая JavaScript , JScript и ActionScript . Он наиболее известен как стандарт JavaScript, предназначенный для обеспечения совместимости веб -страниц в различных веб-браузерах . [2] Он стандартизирован Ecma International в документе ECMA-262 .
ECMAScript обычно используется для написания сценариев на стороне клиента во Всемирной паутине , и он все чаще используется для серверных приложений и сервисов, использующих среды выполнения — Node.js , [3] дено [4] и булочка . [5]
ECMAScript, ECMA-262, JavaScript
[ редактировать ]ECMA-262 , или Спецификация языка ECMAScript , определяет язык ECMAScript или просто ECMAScript . [6] ECMA-262 определяет только синтаксис языка и семантику основного интерфейса прикладного программирования ( API ), например: Множество , Функция и 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] «ECMA» до 1994 года означало «Европейскую ассоциацию производителей компьютеров».
История версий
[ редактировать ]Функции
[ редактировать ]Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( февраль 2017 г. ) |
Язык 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, которые предоставили тысячи тестов. По состоянию на январь 2020 года набор тестов Test262 состоял из 38 014 тестов. [update]. [18] Спецификации ECMAScript через ES7 хорошо поддерживаются в основных веб-браузерах . В таблице ниже показан уровень соответствия текущих версий программного обеспечения самым последним выпускам ECMAScript.
Скриптовый движок | Справочное приложение(я) | Соответствие [19] | |||
---|---|---|---|---|---|
ES5 [20] | ES6 (2015) [21] | ЕС2016+ [22] | Следующий [23] [24] | ||
ПаукОбезьяна | Фаерфокс 120 | 100% | 98% | 98% | 5% |
V8 | Google Chrome 117, Microsoft Edge 113, Опера 98 | 100% | 98% | 98% | 5% |
JavaScriptCore | Сафари 17 | 99% | 100% | 98% | 11% |
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Стефанов, Стоян (2010). Шаблоны JavaScript . О'Рейли Медиа, Инк. с. 5. ISBN 9781449396947 . Архивировано из оригинала 10 июня 2016 г. Проверено 12 января 2016 г.
Основной язык программирования JavaScript [...] основан на стандарте ECMAScript или сокращенно ES.
- ^ Вирфс-Брок, Аллен; Эйх, Брендан (02 мая 2020 г.). «JavaScript: первые 20 лет» . Труды ACM по языкам программирования . 4 : 1–189. дои : 10.1145/3386327 . S2CID 219603695 .
- ^ «Node.js — ECMAScript 2015 (ES6) и более поздние версии» .
- ^ «Deno присоединяется к усилиям по стандартизации JavaScript» . 14 декабря 2021 г.
- ^ https://bun.sh/docs#:~:text=or%2C%20more%20formally%2C-,ECMAScript,-)%20is%20just%20a булочка
- ^ Го, Шу-юй (14 февраля 2022 г.). «Спецификация языка ECMAScript® 2022» . tc39.es . Архивировано из оригинала 8 мая 2020 г. Проверено 14 февраля 2022 г.
- ^ Крил, Пол (23 июня 2008 г.). «Создатель JavaScript размышляет о прошлом и будущем» . infoworld.com . ИнфоМир. Архивировано из оригинала 20 сентября 2014 г. Проверено 31 октября 2013 г.
- ^ «Netscape и Sun анонсируют JavaScript, открытый кросс-платформенный язык объектных сценариев для корпоративных сетей и Интернета» . Netscape.com . Нетскейп. 04.12.1995. Архивировано из оригинала 6 июня 2002 г. Проверено 4 ноября 2019 г.
- ^ Пресс-релиз (15 ноября 1996 г.). «Лидеры отрасли будут продвигать стандартизацию JavaScript Netscape на заседании органа по стандартизации» . Netscape.com . Нетскейп. Архивировано из оригинала 3 декабря 1998 г. Проверено 31 октября 2013 г.
- ^ Эйх, Брендан (3 октября 2006 г.). «Будет ли предложенный суффикс файла для es4?» . сайт mozilla.org . Mail.mozilla.org. Архивировано из оригинала 21 июня 2020 г. Проверено 5 мая 2021 г.
- ^ Маффейс, Серджио; Митчелл, Джон К.; Тали, Анкур (3 января 2020 г.). «Операционная семантика JavaScript» (PDF) . Стэнфорд.edu . Ассоциация вычислительной техники . Архивировано (PDF) из оригинала 3 января 2020 г. Проверено 3 января 2020 г.
- ^ "О" . ECMAScript. Архивировано из оригинала 2 августа 2012 г. Проверено 17 декабря 2009 г.
- ^ Дэвид Фланаган (17 августа 2006 г.). JavaScript: Полное руководство: Полное руководство . «О'Рейли Медиа, Инк.». п. 16. ISBN 978-0-596-55447-7 . Архивировано из оригинала 1 августа 2020 года . Проверено 11 ноября 2019 г.
- ^ Бернхардт, Гэри. Ват . CodeMash 2012. Уничтожить все программное обеспечение . Архивировано из оригинала 28 октября 2019 г. Проверено 18 августа 2021 г.
- ^ Гилбертсон, Скотт (26 января 2012 г.). «Шутки для ботанов: какие моменты в программировании» . Проводной . Архивировано из оригинала 23 августа 2020 года . Проверено 22 августа 2021 г.
- ^ «Типы данных и структуры данных JavaScript – JavaScript | MDN» . Developer.mozilla.org . 16 февраля 2017 г. Архивировано из оригинала 14 марта 2017 г. Проверено 24 февраля 2017 г.
- ^ «Язык ECMAScript – test262» . Test262.ecmascript.org. Архивировано из оригинала 14 мая 2011 г. Проверено 31 октября 2013 г.
- ^ «tc39/test262» . Гитхаб . 24 января 2020 года. Архивировано из оригинала 1 октября 2019 года . Проверено 29 января 2020 г.
- ^ ES5 является базовым для этого набора тестов. Уровень соответствия для других выпусков отражает поддержку только новых функций, а не полную оценку.
- ^ «Таблица совместимости ECMAScript 5» . совместимая таблица.github.io . 14 апреля 2024 г. Архивировано из оригинала 14 января 2024 г. Проверено 14 апреля 2024 г.
- ^ «Таблица совместимости ECMAScript 6» . совместимая таблица.github.io . 14 апреля 2024 г. Архивировано из оригинала 4 апреля 2024 г. Проверено 14 апреля 2024 г.
- ^ «Таблица совместимости ECMAScript 2016+» . совместимая таблица.github.io . 14 апреля 2024 г. Архивировано из оригинала 14 января 2024 г. Проверено 14 апреля 2024 г.
- ^ «Таблица совместимости ECMAScript Next» . совместимая таблица.github.io . 14 апреля 2024 г. Архивировано из оригинала 14 января 2024 г. Проверено 14 апреля 2024 г.
- ^ Составная оценка, включающая новые функции от ES7 до черновиков следующей редакции.