JavaScript ES14 | Спецификация языка ECMAScript 2023

Этот стандарт Ecma определяет язык ECMAScript 2023. Это четырнадцатое издание Спецификации языка ECMAScript. С момента публикации первого издания в 1997 году ECMAScript превратился в один из наиболее широко используемых в мире языков программирования общего назначения. Он наиболее известен как язык, встроенный в веб-браузеры, но также широко применяется для серверных и встроенных приложений.

ECMAScript основан на нескольких исходных технологиях, наиболее известными из которых являются JavaScript (Netscape) и JScript (Microsoft). Язык был изобретен Бренданом Эйхом из Netscape и впервые появился в браузере Navigator 2.0 этой компании. Он появился во всех последующих браузерах от Netscape и во всех браузерах от Microsoft, начиная с Internet Explorer 3.0.

Разработка спецификации языка ECMAScript началась в ноябре 1996 года. Первая редакция этого стандарта Ecma была принята Генеральной Ассамблеей Ecma в июне 1997 года.

Этот стандарт Ecma был представлен в ISO/IEC JTC 1 для принятия в соответствии с ускоренной процедурой и утвержден в качестве международного стандарта ISO/IEC 16262 в апреле 1998 г. Генеральная ассамблея Ecma в июне 1998 г. утвердила второе издание ECMA-262 для сохранить его в полном соответствии с ISO/IEC 16262. Изменения между первым и вторым изданием носят редакционный характер.

В третьем издании стандарта представлены мощные регулярные выражения, улучшенная обработка строк, новые операторы управления, обработка исключений try/catch, более точное определение ошибок, форматирование числового вывода и небольшие изменения в ожидании будущего развития языка. Третья редакция стандарта ECMAScript была принята Генеральной Ассамблеей Ecma в декабре 1999 г. и опубликована как ISO/IEC 16262:2002 в июне 2002 г.

После публикации третьего издания ECMAScript получил широкое распространение во Всемирной паутине, где он стал языком программирования, поддерживаемым практически всеми веб-браузерами. Была проделана значительная работа по разработке четвертой редакции ECMAScript. Однако эта работа не была завершена и не опубликована в качестве четвертого издания ECMAScript, но часть ее была включена в разработку шестого издания.

Пятая редакция ECMAScript (опубликованная как ECMA-262 5-я редакция) кодифицировала де-факто интерпретации спецификации языка, которые стали распространенными среди реализаций браузеров, и добавила поддержку новых функций, появившихся после публикации третьей редакции. К таким функциям относятся свойства доступа , рефлексивное создание и проверка объектов, программный контроль атрибутов свойств, дополнительные функции манипулирования массивами, поддержка формата кодирования объектов JSON и строгий режим, обеспечивающий расширенную проверку ошибок и безопасность программы. Пятое издание было принято Генеральной Ассамблеей Ecma в декабре 2009 года.

Пятое издание было представлено в ISO/IEC JTC 1 для принятия по ускоренной процедуре и утверждено в качестве международного стандарта ISO/IEC 16262:2011. Редакция 5.1 стандарта ECMAScript включает незначительные исправления и является тем же текстом, что и ISO/IEC 16262:2011. Версия 5.1 была принята Генеральной Ассамблеей Ecma в июне 2011 года.

Целенаправленная разработка шестого издания началась в 2009 г., когда пятое издание готовилось к публикации. Однако этому предшествовали значительные эксперименты и усилия по разработке языкового усовершенствования, начиная с публикации третьего издания в 1999 году. В самом прямом смысле завершение шестого издания является кульминацией пятнадцатилетней работы. Цели этого выпуска включали улучшенную поддержку больших приложений, создание библиотек и использование ECMAScript в качестве цели компиляции для других языков. Некоторые из его основных улучшений включали модули, объявления классов, лексическую область видимости блока, итераторы и генераторы, обещания для асинхронного программирования, шаблоны деструктурирования и правильные хвостовые вызовы. Библиотека встроенных модулей ECMAScript была расширена для поддержки дополнительных абстракций данных, включая карты, наборы, и массивы двоичных числовых значений, а также дополнительную поддержку дополнительных символов Unicode в строках и регулярных выражениях. Встроенные модули также стали расширяемыми за счет создания подклассов. Шестое издание обеспечивает основу для регулярных дополнительных расширений языка и библиотек. Шестое издание было принято Генеральной Ассамблеей в июне 2015 года.

ECMAScript 2016 был первым выпуском ECMAScript, выпущенным в соответствии с новым ежегодным графиком выпуска Ecma TC39 и открытым процессом разработки. Исходный текстовый документ был создан из исходного документа ECMAScript 2015, чтобы служить основой для дальнейшей разработки полностью на GitHub. За год разработки этого стандарта были зарегистрированы сотни запросов на вытягивание и проблем, представляющих тысячи исправлений ошибок, редакционных исправлений и других улучшений. Кроме того, для помощи в этих усилиях были разработаны многочисленные программные инструменты, включая Ecmarkup, Ecmarkdown и Grammarkdown. ES2016 также включает поддержку нового оператора возведения в степень и добавляет новый метод в Array.prototypeвызываемый includes.

В ECMAScript 2017 представлены асинхронные функции, общая память и атомарность, а также небольшие усовершенствования языка и библиотеки, исправления ошибок и редакционные обновления. Асинхронные функции улучшают возможности асинхронного программирования, предоставляя синтаксис для функций, возвращающих обещания. Shared Memory и Atomics представляют новую модель памяти, которая позволяет программам с несколькими агентами взаимодействовать с помощью атомарных операций, что обеспечивает четко определенный порядок выполнения даже на параллельных процессорах. Он также включает новые статические методы для Object: Object.values, Object.entriesи Object.getOwnPropertyDescriptors.

В ECMAScript 2018 появилась поддержка асинхронной итерации через протокол AsyncIterator и асинхронные генераторы. Он также включает четыре новых функции регулярных выражений: dotAllфлаг, именованные группы захвата, escape-последовательности свойств Unicode и проверки назад. Наконец, он включает свойства покоя и распространения объекта.

В ECMAScript 2019 появилось несколько новых встроенных функций: on flatдля выравнивания массивов, для прямого превращения возвращаемого значения в новый объект и on в качестве альтернатив с лучшими названиями широко реализованным, но нестандартным встроенным функциям. Кроме того, он включает несколько незначительных обновлений синтаксиса и семантики. Обновленный синтаксис включает необязательные параметры привязки catch и позволяет U+2028 (РАЗДЕЛИТЕЛЬ СТРОК) и U+2029 (РАЗДЕЛИТЕЛЬ ПУНКТОВ) в строковых литералах выравниваться с JSON. Другие обновления включали требование стабильной сортировки, требование возвращать правильно сформированный UTF-8 независимо от ввода и уточнениеflatMapArray.prototypeObject.fromEntriesObject.entriestrimStarttrimEndString.prototypeString.prototype.trimLefttrimRightArray.prototype.sortJSON.stringifyFunction.prototype.toStringтребуя, чтобы он либо возвращал соответствующий исходный текст, либо стандартный заполнитель.

ECMAScript 2020, 11-е издание, представил matchAllметод для строк, чтобы создать итератор для всех объектов соответствия, сгенерированных глобальным регулярным выражением; import(), синтаксис для асинхронного импорта модулей с динамическим спецификатором; BigInt, новый числовой примитив для работы с целыми числами произвольной точности ; Promise.allSettled, новый комбинатор Promise, который не закорачивает; globalThis, универсальный способ доступа к глобальному thisзначению; специальный export * as ns from 'module'синтаксис для использования в модулях; усиление стандартизации for-inпорядка переписи; import.meta, хозяин-заполненный объект, доступный в Модулях, который может содержать контекстную информацию о Модуле; а также добавлены две новые синтаксические функции для улучшения работы с «нулевыми» значениями ( nullили undefined): нулевое объединение, оператор выбора значения; и необязательная цепочка, оператор доступа к свойству и вызова функции, который замыкается, если значение для доступа/вызова равно нулю.

ECMAScript 2021, 12-е издание, представил replaceAllметод для строк; Promise.any, комбинатор обещаний, который замыкается, когда входное значение выполнено; AggregateError, новый тип Error для одновременного представления нескольких ошибок; логические операторы присваивания ( ??=, &&=, ||=); WeakRefдля обращения к целевому объекту без сохранения его от сборки мусора и FinalizationRegistryдля управления регистрацией и отменой регистрации операций очистки, выполняемых при сборке мусора целевых объектов; разделители числовых литералов ( 1_000); и Array.prototype.sortстал более точным, уменьшив количество случаев, которые приводят к порядку сортировки, определяемому реализацией .

ECMAScript 2022, 13-я редакция, представила верхний уровень await, позволяющий использовать ключевое слово на верхнем уровне модулей; новые элементы класса: общедоступные и частные поля экземпляра, общедоступные и частные статические поля, частные методы экземпляра и средства доступа, а также частные статические методы и средства доступа; статические блоки внутри классов для выполнения инициализации оценки для каждого класса; синтаксис для #x in objпроверки наличия закрытых полей в объектах; индексы совпадения регулярных выражений с помощью /dфлага, который предоставляет начальные и конечные индексы для совпадающих подстрок; causeсвойство Errorобъектов, которое можно использовать для записи причинно-следственной цепочки ошибок ; метод atдля строк, массивов и типизированных массивов, допускающий относительную индексацию; а такжеObject.hasOwn, удобная альтернатива Object.prototype.hasOwnProperty.

Десятки людей, представляющих многие организации, внесли значительный вклад в разработку этого и предыдущих выпусков в Ecma TC39. Кроме того, возникло активное сообщество, поддерживающее усилия TC39 по разработке ECMAScript. Это сообщество рассмотрело множество черновиков, отправило тысячи отчетов об ошибках, провело эксперименты по реализации, предоставило наборы тестов и ознакомило всемирное сообщество разработчиков с ECMAScript. К сожалению, невозможно определить и отметить каждого человека и организацию, которые внесли свой вклад в эти усилия.

Аллен Вирфс-Брок
ECMA-262, редактор проекта, 6-е издание

Брайан Терлсон
ECMA-262, редактор проекта, выпуски с 7 по 10

Джордан Харбанд
ECMA-262, редактор проекта, выпуски с 10 по 12

Подробнее читайте на https://tc39.es/ecma262/ 

#javascript #ecmascript

What is GEEK

Buddha Community

JavaScript ES14 | Спецификация языка ECMAScript 2023

JavaScript ES14 | Спецификация языка ECMAScript 2023

Этот стандарт Ecma определяет язык ECMAScript 2023. Это четырнадцатое издание Спецификации языка ECMAScript. С момента публикации первого издания в 1997 году ECMAScript превратился в один из наиболее широко используемых в мире языков программирования общего назначения. Он наиболее известен как язык, встроенный в веб-браузеры, но также широко применяется для серверных и встроенных приложений.

ECMAScript основан на нескольких исходных технологиях, наиболее известными из которых являются JavaScript (Netscape) и JScript (Microsoft). Язык был изобретен Бренданом Эйхом из Netscape и впервые появился в браузере Navigator 2.0 этой компании. Он появился во всех последующих браузерах от Netscape и во всех браузерах от Microsoft, начиная с Internet Explorer 3.0.

Разработка спецификации языка ECMAScript началась в ноябре 1996 года. Первая редакция этого стандарта Ecma была принята Генеральной Ассамблеей Ecma в июне 1997 года.

Этот стандарт Ecma был представлен в ISO/IEC JTC 1 для принятия в соответствии с ускоренной процедурой и утвержден в качестве международного стандарта ISO/IEC 16262 в апреле 1998 г. Генеральная ассамблея Ecma в июне 1998 г. утвердила второе издание ECMA-262 для сохранить его в полном соответствии с ISO/IEC 16262. Изменения между первым и вторым изданием носят редакционный характер.

В третьем издании стандарта представлены мощные регулярные выражения, улучшенная обработка строк, новые операторы управления, обработка исключений try/catch, более точное определение ошибок, форматирование числового вывода и небольшие изменения в ожидании будущего развития языка. Третья редакция стандарта ECMAScript была принята Генеральной Ассамблеей Ecma в декабре 1999 г. и опубликована как ISO/IEC 16262:2002 в июне 2002 г.

После публикации третьего издания ECMAScript получил широкое распространение во Всемирной паутине, где он стал языком программирования, поддерживаемым практически всеми веб-браузерами. Была проделана значительная работа по разработке четвертой редакции ECMAScript. Однако эта работа не была завершена и не опубликована в качестве четвертого издания ECMAScript, но часть ее была включена в разработку шестого издания.

Пятая редакция ECMAScript (опубликованная как ECMA-262 5-я редакция) кодифицировала де-факто интерпретации спецификации языка, которые стали распространенными среди реализаций браузеров, и добавила поддержку новых функций, появившихся после публикации третьей редакции. К таким функциям относятся свойства доступа , рефлексивное создание и проверка объектов, программный контроль атрибутов свойств, дополнительные функции манипулирования массивами, поддержка формата кодирования объектов JSON и строгий режим, обеспечивающий расширенную проверку ошибок и безопасность программы. Пятое издание было принято Генеральной Ассамблеей Ecma в декабре 2009 года.

Пятое издание было представлено в ISO/IEC JTC 1 для принятия по ускоренной процедуре и утверждено в качестве международного стандарта ISO/IEC 16262:2011. Редакция 5.1 стандарта ECMAScript включает незначительные исправления и является тем же текстом, что и ISO/IEC 16262:2011. Версия 5.1 была принята Генеральной Ассамблеей Ecma в июне 2011 года.

Целенаправленная разработка шестого издания началась в 2009 г., когда пятое издание готовилось к публикации. Однако этому предшествовали значительные эксперименты и усилия по разработке языкового усовершенствования, начиная с публикации третьего издания в 1999 году. В самом прямом смысле завершение шестого издания является кульминацией пятнадцатилетней работы. Цели этого выпуска включали улучшенную поддержку больших приложений, создание библиотек и использование ECMAScript в качестве цели компиляции для других языков. Некоторые из его основных улучшений включали модули, объявления классов, лексическую область видимости блока, итераторы и генераторы, обещания для асинхронного программирования, шаблоны деструктурирования и правильные хвостовые вызовы. Библиотека встроенных модулей ECMAScript была расширена для поддержки дополнительных абстракций данных, включая карты, наборы, и массивы двоичных числовых значений, а также дополнительную поддержку дополнительных символов Unicode в строках и регулярных выражениях. Встроенные модули также стали расширяемыми за счет создания подклассов. Шестое издание обеспечивает основу для регулярных дополнительных расширений языка и библиотек. Шестое издание было принято Генеральной Ассамблеей в июне 2015 года.

ECMAScript 2016 был первым выпуском ECMAScript, выпущенным в соответствии с новым ежегодным графиком выпуска Ecma TC39 и открытым процессом разработки. Исходный текстовый документ был создан из исходного документа ECMAScript 2015, чтобы служить основой для дальнейшей разработки полностью на GitHub. За год разработки этого стандарта были зарегистрированы сотни запросов на вытягивание и проблем, представляющих тысячи исправлений ошибок, редакционных исправлений и других улучшений. Кроме того, для помощи в этих усилиях были разработаны многочисленные программные инструменты, включая Ecmarkup, Ecmarkdown и Grammarkdown. ES2016 также включает поддержку нового оператора возведения в степень и добавляет новый метод в Array.prototypeвызываемый includes.

В ECMAScript 2017 представлены асинхронные функции, общая память и атомарность, а также небольшие усовершенствования языка и библиотеки, исправления ошибок и редакционные обновления. Асинхронные функции улучшают возможности асинхронного программирования, предоставляя синтаксис для функций, возвращающих обещания. Shared Memory и Atomics представляют новую модель памяти, которая позволяет программам с несколькими агентами взаимодействовать с помощью атомарных операций, что обеспечивает четко определенный порядок выполнения даже на параллельных процессорах. Он также включает новые статические методы для Object: Object.values, Object.entriesи Object.getOwnPropertyDescriptors.

В ECMAScript 2018 появилась поддержка асинхронной итерации через протокол AsyncIterator и асинхронные генераторы. Он также включает четыре новых функции регулярных выражений: dotAllфлаг, именованные группы захвата, escape-последовательности свойств Unicode и проверки назад. Наконец, он включает свойства покоя и распространения объекта.

В ECMAScript 2019 появилось несколько новых встроенных функций: on flatдля выравнивания массивов, для прямого превращения возвращаемого значения в новый объект и on в качестве альтернатив с лучшими названиями широко реализованным, но нестандартным встроенным функциям. Кроме того, он включает несколько незначительных обновлений синтаксиса и семантики. Обновленный синтаксис включает необязательные параметры привязки catch и позволяет U+2028 (РАЗДЕЛИТЕЛЬ СТРОК) и U+2029 (РАЗДЕЛИТЕЛЬ ПУНКТОВ) в строковых литералах выравниваться с JSON. Другие обновления включали требование стабильной сортировки, требование возвращать правильно сформированный UTF-8 независимо от ввода и уточнениеflatMapArray.prototypeObject.fromEntriesObject.entriestrimStarttrimEndString.prototypeString.prototype.trimLefttrimRightArray.prototype.sortJSON.stringifyFunction.prototype.toStringтребуя, чтобы он либо возвращал соответствующий исходный текст, либо стандартный заполнитель.

ECMAScript 2020, 11-е издание, представил matchAllметод для строк, чтобы создать итератор для всех объектов соответствия, сгенерированных глобальным регулярным выражением; import(), синтаксис для асинхронного импорта модулей с динамическим спецификатором; BigInt, новый числовой примитив для работы с целыми числами произвольной точности ; Promise.allSettled, новый комбинатор Promise, который не закорачивает; globalThis, универсальный способ доступа к глобальному thisзначению; специальный export * as ns from 'module'синтаксис для использования в модулях; усиление стандартизации for-inпорядка переписи; import.meta, хозяин-заполненный объект, доступный в Модулях, который может содержать контекстную информацию о Модуле; а также добавлены две новые синтаксические функции для улучшения работы с «нулевыми» значениями ( nullили undefined): нулевое объединение, оператор выбора значения; и необязательная цепочка, оператор доступа к свойству и вызова функции, который замыкается, если значение для доступа/вызова равно нулю.

ECMAScript 2021, 12-е издание, представил replaceAllметод для строк; Promise.any, комбинатор обещаний, который замыкается, когда входное значение выполнено; AggregateError, новый тип Error для одновременного представления нескольких ошибок; логические операторы присваивания ( ??=, &&=, ||=); WeakRefдля обращения к целевому объекту без сохранения его от сборки мусора и FinalizationRegistryдля управления регистрацией и отменой регистрации операций очистки, выполняемых при сборке мусора целевых объектов; разделители числовых литералов ( 1_000); и Array.prototype.sortстал более точным, уменьшив количество случаев, которые приводят к порядку сортировки, определяемому реализацией .

ECMAScript 2022, 13-я редакция, представила верхний уровень await, позволяющий использовать ключевое слово на верхнем уровне модулей; новые элементы класса: общедоступные и частные поля экземпляра, общедоступные и частные статические поля, частные методы экземпляра и средства доступа, а также частные статические методы и средства доступа; статические блоки внутри классов для выполнения инициализации оценки для каждого класса; синтаксис для #x in objпроверки наличия закрытых полей в объектах; индексы совпадения регулярных выражений с помощью /dфлага, который предоставляет начальные и конечные индексы для совпадающих подстрок; causeсвойство Errorобъектов, которое можно использовать для записи причинно-следственной цепочки ошибок ; метод atдля строк, массивов и типизированных массивов, допускающий относительную индексацию; а такжеObject.hasOwn, удобная альтернатива Object.prototype.hasOwnProperty.

Десятки людей, представляющих многие организации, внесли значительный вклад в разработку этого и предыдущих выпусков в Ecma TC39. Кроме того, возникло активное сообщество, поддерживающее усилия TC39 по разработке ECMAScript. Это сообщество рассмотрело множество черновиков, отправило тысячи отчетов об ошибках, провело эксперименты по реализации, предоставило наборы тестов и ознакомило всемирное сообщество разработчиков с ECMAScript. К сожалению, невозможно определить и отметить каждого человека и организацию, которые внесли свой вклад в эти усилия.

Аллен Вирфс-Брок
ECMA-262, редактор проекта, 6-е издание

Брайан Терлсон
ECMA-262, редактор проекта, выпуски с 7 по 10

Джордан Харбанд
ECMA-262, редактор проекта, выпуски с 10 по 12

Подробнее читайте на https://tc39.es/ecma262/ 

#javascript #ecmascript

Rahul Jangid

1622207074

What is JavaScript - Stackfindover - Blog

Who invented JavaScript, how it works, as we have given information about Programming language in our previous article ( What is PHP ), but today we will talk about what is JavaScript, why JavaScript is used The Answers to all such questions and much other information about JavaScript, you are going to get here today. Hope this information will work for you.

Who invented JavaScript?

JavaScript language was invented by Brendan Eich in 1995. JavaScript is inspired by Java Programming Language. The first name of JavaScript was Mocha which was named by Marc Andreessen, Marc Andreessen is the founder of Netscape and in the same year Mocha was renamed LiveScript, and later in December 1995, it was renamed JavaScript which is still in trend.

What is JavaScript?

JavaScript is a client-side scripting language used with HTML (Hypertext Markup Language). JavaScript is an Interpreted / Oriented language called JS in programming language JavaScript code can be run on any normal web browser. To run the code of JavaScript, we have to enable JavaScript of Web Browser. But some web browsers already have JavaScript enabled.

Today almost all websites are using it as web technology, mind is that there is maximum scope in JavaScript in the coming time, so if you want to become a programmer, then you can be very beneficial to learn JavaScript.

JavaScript Hello World Program

In JavaScript, ‘document.write‘ is used to represent a string on a browser.

<script type="text/javascript">
	document.write("Hello World!");
</script>

How to comment JavaScript code?

  • For single line comment in JavaScript we have to use // (double slashes)
  • For multiple line comments we have to use / * – – * /
<script type="text/javascript">

//single line comment

/* document.write("Hello"); */

</script>

Advantages and Disadvantages of JavaScript

#javascript #javascript code #javascript hello world #what is javascript #who invented javascript

Hire Dedicated JavaScript Developers -Hire JavaScript Developers

It is said that a digital resource a business has must be interactive in nature, so the website or the business app should be interactive. How do you make the app interactive? With the use of JavaScript.

Does your business need an interactive website or app?

Hire Dedicated JavaScript Developer from WebClues Infotech as the developer we offer is highly skilled and expert in what they do. Our developers are collaborative in nature and work with complete transparency with the customers.

The technology used to develop the overall app by the developers from WebClues Infotech is at par with the latest available technology.

Get your business app with JavaScript

For more inquiry click here https://bit.ly/31eZyDZ

Book Free Interview: https://bit.ly/3dDShFg

#hire dedicated javascript developers #hire javascript developers #top javascript developers for hire #hire javascript developer #hire a freelancer for javascript developer #hire the best javascript developers

Niraj Kafle

1589255577

The essential JavaScript concepts that you should understand

As a JavaScript developer of any level, you need to understand its foundational concepts and some of the new ideas that help us developing code. In this article, we are going to review 16 basic concepts. So without further ado, let’s get to it.

#javascript-interview #javascript-development #javascript-fundamental #javascript #javascript-tips

许 志强

许 志强

1656220200

JavaScript ES14 | ECMAScript 2023 语言规范

该 Ecma 标准定义了 ECMAScript 2023 语言。它是 ECMAScript 语言规范的第十四版。自 1997 年第一版出版以来,ECMAScript 已发展成为世界上使用最广泛的通用编程语言之一。它以嵌入在网络浏览器中的语言而闻名,但也被广泛用于服务器和嵌入式应用程序。

ECMAScript 基于多种原始技术,最著名的是 JavaScript (Netscape) 和 JScript (Microsoft)。该语言由 Netscape 的 Brendan Eich 发明,并首次出现在该公司的 Navigator 2.0 浏览器中。它出现在 Netscape 的所有后续浏览器中,以及从 Internet Explorer 3.0 开始的所有 Microsoft 浏览器中。

ECMAScript 语言规范的开发始于 1996 年 11 月。该 Ecma 标准的第一版由 1997 年 6 月的 Ecma 大会通过。

该 Ecma 标准于 1998 年 4 月提交给 ISO/IEC JTC 1 以供通过,并于 1998 年 4 月被批准为国际标准 ISO/IEC 16262。1998 年 6 月的 Ecma 大会批准了第二版 ECMA-262使其与 ISO/IEC 16262 完全一致。第一版和第二版之间的更改本质上是编辑性的。

该标准的第三版引入了强大的正则表达式、更好的字符串处理、新的控制语句、try/catch 异常处理、更严格的错误定义、数字输出格式以及对未来语言增长预期的微小变化。ECMAScript 标准的第三版于 1999 年 12 月被 Ecma 大会通过,并于 2002 年 6 月作为 ISO/IEC 16262:2002 发布。

在第三版出版后,ECMAScript 与万维网一起获得了广泛采用,它已成为基本上所有 Web 浏览器都支持的编程语言。为开发第四版 ECMAScript 做了大量工作。然而,这项工作没有完成,也没有作为 ECMAScript 的第四版发布,但其中一部分被纳入了第六版的开发中。

ECMAScript 第五版(以 ECMA-262 第 5 版出版)编纂了对已在浏览器实现中普遍使用的语言规范的事实上的解释,并增加了对自第三版出版以来出现的新功能的支持。这些功能包括访问器属性、对象的反射创建和检查、属性属性的程序控制、附加的数组操作功能、对 JSON 对象编码格式的支持以及提供增强的错误检查和程序安全性的严格模式。第五版由 2009 年 12 月的 Ecma 大会通过。

第五版已提交给 ISO/IEC JTC 1 以通过快速通道程序,并被批准为国际标准 ISO/IEC 16262:2011。ECMAScript 标准的 5.1 版包含了一些小的更正,并且与 ISO/IEC 16262:2011 的文本相同。2011 年 6 月的 Ecma 大会通过了 5.1 版。

第六版的重点开发始于 2009 年,第五版正在准备出版。然而,在此之前,自 1999 年第三版出版以来,进行了大量的实验和语言增强设计工作。在非常真实的意义上,第六版的完成是十五年努力的高潮。此版本的目标包括为大型应用程序、库创建和使用 ECMAScript 作为其他语言的编译目标提供更好的支持。它的一些主要增强功能包括模块、类声明、词法块作用域、迭代器和生成器、异步编程的承诺、解构模式和适当的尾调用。内置的 ECMAScript 库已扩展以支持其他数据抽象,包括地图、集合、和二进制数值数组,以及对字符串和正则表达式中的 Unicode 补充字符的额外支持。内置插件也可以通过子类化进行扩展。第六版为常规的、增量的语言和库增强提供了基础。第六版由 2015 年 6 月的大会通过。

ECMAScript 2016 是第一个在 Ecma TC39 新的年度发布节奏和开放式开发流程下发布的 ECMAScript 版本。从 ECMAScript 2015 源文档构建纯文本源文档,作为完全在 GitHub 上进一步开发的基础。在该标准开发的一年中,提交了数百个拉取请求和问题,代表了数千个错误修复、编辑修复和其他改进。此外,还开发了许多软件工具来帮助完成这项工作,包括 Ecmarkup、Ecmarkdown 和 Grammarkdown。ES2016 还包括对新幂运算符的支持,并为Array.prototype被调用添加了一个新方法includes

ECMAScript 2017 引入了异步函数、共享内存和原子以及较小的语言和库增强、错误修复和编辑更新。异步函数通过为返回承诺的函数提供语法来改进异步编程体验。Shared Memory and Atomics 引入了一种新的内存模型,它允许多代理程序使用原子操作进行通信,即使在并行 CPU 上也能确保明确定义的执行顺序。它还包括 Object: Object.valuesObject.entriesObject.getOwnPropertyDescriptors.

ECMAScript 2018 通过 AsyncIterator 协议和异步生成器引入了对异步迭代的支持。它还包括四个新的正则表达式功能:dotAll标志、命名捕获组、Unicode 属性转义和后视断言。最后,它包括对象休息和传播属性。

ECMAScript 2019 引入了一些新的内置函数:flatand flatMaponArray.prototype用于展平数组,Object.fromEntries用于直接将返回值Object.entries转换为新的 Object,以及trimStart作为广泛实施但非标准和内置的trimEnd更好命名的替代品。此外,它还包括对语法和语义的一些小的更新。更新的语法包括可选的 catch 绑定参数,并允许字符串文字中的 U+2028 (LINE SEPARATOR) 和 U+2029 (PARAGRAPH SEPARATOR) 与 JSON 对齐。其他更新包括要求是稳定的排序,要求无论输入如何都返回格式良好的 UTF-8,以及澄清String.prototypeString.prototype.trimLefttrimRightArray.prototype.sortJSON.stringifyFunction.prototype.toString通过要求它返回相应的原始源文本或标准占位符。

ECMAScript 2020 第 11 版引入了matchAllStrings 的方法,为全局正则表达式生成的所有匹配对象生成迭代器;import(), 一种使用动态说明符异步导入模块的语法;BigInt,一种用于处理任意精度整数的新数字原语;Promise.allSettled,一个新的不会短路的 Promise 组合器;globalThis,获取全局this值的通用方式;在模块中使用的专用export * as ns from 'module'语法;增加for-in枚举顺序的标准化;import.meta,主机- 模块中可用的填充对象,可能包含有关模块的上下文信息;以及添加两个新的语法特性来改进对“nullish”值(nullundefined)的处理:nullish coalescing,一个值选择运算符;和可选链接,一个属性访问和函数调用运算符,如果要访问/调用的值为空值,则会短路。

ECMAScript 2021 第 12 版引入了replaceAllStrings 的方法;Promise.any, 一个 Promise 组合子,当输入值被满足时短路;AggregateError,一种新的错误类型,一次表示多个错误;逻辑赋值运算符 ( ??=, &&=, ||=); WeakRef,用于引用目标对象而不将其从垃圾收集中保存,并且FinalizationRegistry,管理在目标对象被垃圾收集时执行的清理操作的注册和注销;数字文字的分隔符 ( 1_000); 并且Array.prototype.sort变得更加精确,减少了导致实现定义的 排序顺序的案例数量。

ECMAScript 2022 第 13 版引入了 top-level await,允许在模块的顶层使用关键字;新的类元素:公共和私有实例字段、公共和私有静态字段、私有实例方法和访问器、私有静态方法和访问器;类内的静态块,用于执行每个类的评估初始化;#x in obj语法,用于测试对象上是否存在私有字段;正则表达式通过/d标志匹配索引,该标志为匹配的子字符串提供开始和结束索引;对象的cause属性Error,可用于记录错误的因果链;atStrings、Arrays 和 TypedArrays的方法,它允许相对索引;和Object.hasOwn,一个方便的替代方案Object.prototype.hasOwnProperty

代表许多组织的数十名个人在 Ecma TC39 中为本版本和之前版本的开发做出了非常重要的贡献。此外,一个充满活力的社区已经出现,支持 TC39 的 ECMAScript 工作。这个社区已经审查了许多草稿,提交了数千份错误报告,进行了实施实验,贡献了测试套件,并就 ECMAScript 对全球开发人员社区进行了教育。不幸的是,不可能识别和承认为这项工作做出贡献的每个人和组织。

Allen Wirfs-Brock
ECMA-262,项目编辑,第 6 版

Brian Terlson
ECMA-262,项目编辑,第 7 版到第 10 版

Jordan Harband
ECMA-262,项目编辑,第 10 至第 12 版

阅读更多https://tc39.es/ecma262/ 

#javascript  #programming  #ecmascript