Введение
Спецификация для Javascript и других языков программирования
ECMAScript (/'//ɛ//k//m//ə//s//k//r//ɪ//p//t/; ES) — это стандарт для скриптовых языков, включая JavaScript, JScript и ActionScript. Он наиболее известен как стандарт JavaScript, предназначенный для обеспечения совместимости веб-страниц в различных веб-браузерах. Он стандартизирован Ecma International в документе ECMA-262. ECMAScript обычно используется для клиентского скриптинга во Всемирной паутине, и его все чаще применяют для серверных приложений и сервисов с использованием сред выполнения Node.js, Deno и Bun.
ECMAScript, ECMA-262, JavaScript
ECMA 262, или спецификация языка ECMAScript, определяет язык ECMAScript, или просто ECMAScript. ECMA 262 определяет только синтаксис языка и семантику основного интерфейса прикладного программирования (API), например, , , и , в то время как корректные реализации JavaScript добавляют собственную функциональность, такую как ввод-вывод и работа с файловой системой.
История
Спецификация ECMAScript — это стандартизированная спецификация языка сценариев, разработанная Бренданом Айхом из Netscape; изначально она называлась Mocha, затем LiveScript и, наконец, JavaScript. В декабре 1995 года Sun Microsystems и Netscape объявили о JavaScript в пресс-релизе. В ноябре 1996 года Netscape объявила о созыве встречи организации Ecma International для продвижения стандартизации JavaScript. Первое издание ECMA-262 было принято Генеральной Ассамблеей Ecma в июне 1997 года. С тех пор было опубликовано несколько редакций языкового стандарта. Название "ECMAScript" стало компромиссом между организациями, участвующими в стандартизации языка, особенно Netscape и Microsoft, чьи разногласия доминировали на ранних заседаниях по стандартизации. Айх заметил, что "ECMAScript всегда было нежелательным торговым названием, звучащим как кожное заболевание". ECMAScript был формализован с использованием операционной семантики в Стэнфордском университете и в Отделе вычислительной техники Имперского колледжа Лондона для анализа безопасности и стандартизации. До 1994 года аббревиатура "ECMA" расшифровывалась как "European Computer Manufacturers Association" (Европейская ассоциация производителей компьютеров).
Особенности
Язык ECMAScript включает в себя структурированные, динамические, функциональные и прототипно-ориентированные возможности.
Императив и структурированный
ECMAScript JavaScript поддерживает структурированное программирование в стиле C. Ранее JavaScript поддерживал только область видимости функций с использованием ключевого слова var, но ECMAScript 2015 добавил ключевые слова let и const, позволяя JavaScript поддерживать как область видимости блоков, так и область видимости функций. JavaScript поддерживает автоматическую расстановку точек с запятой, что означает, что точки с запятой, обычно завершающие оператор в C, могут быть опущены в JavaScript. Как и в языках, подобных C, управление потоком осуществляется с помощью операторов , , / , / , и . Функции слабо типизированы и могут принимать и возвращать значения любого типа. Непереданные аргументы по умолчанию равны .
Недостаточно написано
ECMAScript имеет слабую типизацию. Это означает, что определенные типы присваиваются неявно, в зависимости от выполняемой операции. Однако в реализации JavaScript есть несколько особенностей при преобразовании переменной из одного типа в другой. Эти особенности стали темой доклада под названием "Ват".
Динамическая
ECMAScript имеет динамическую типизацию. Следовательно, тип привязывается к значению, а не к выражению. ECMAScript поддерживает различные способы проверки типа объектов, включая типизацию по поведению (duck typing).
Транспилирование
С 2015 года транспилирование JavaScript стало очень распространенным. Транспиляция — это компиляция из исходного кода в исходный код, при которой используются более новые версии JavaScript, а транспилятор переписывает исходный код для обеспечения поддержки старыми браузерами. Обычно транспиляторы преобразуют код до стандарта ES3 для обеспечения совместимости со всеми версиями браузеров. Настройки для транспиляции в определенную версию можно конфигурировать в зависимости от потребностей. Транспиляция добавляет дополнительный этап в процесс сборки и иногда используется для избежания необходимости в полифилах. Полифилы создают новые функции для устаревших сред, в которых их нет. Полифилы реализуют это во время выполнения в интерпретаторе, например, в браузере пользователя или на сервере. Вместо этого транспиляция переписывает сам код ECMAScript на этапе сборки разработки, до того как он попадет в интерпретатор.