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]
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.
Основной язык программирования JavaScript [...] основан на стандарте ECMAScript , или сокращенно ES.
{{cite journal}}
: CS1 maint: дата и год ( ссылка )