какая версия ecmascript последняя

Нововведения JavaScript ES2020 с простыми примерами

Представляем вам перевод статьи из блога Carlos Caballero на сайте Medium.com. Ранее мы публиковали материал этого автора о функциях ES10, появившихся в 2019 году.

какая версия ecmascript последняя. Смотреть фото какая версия ecmascript последняя. Смотреть картинку какая версия ecmascript последняя. Картинка про какая версия ecmascript последняя. Фото какая версия ecmascript последняя
Фото AbsolutVision с Unsplash

Введение

ES2020 — это версия ECMAScript, актуальная для 2020 года. В ней не так много нововведений по сравнению с ES6, вышедшей в 2015 году, но несколько полезных функций все же есть.

В этой статье новые фичи ES2020 описываются на простых примерах кода. Вы сможете быстро понять их без каких-либо сложных разъяснений.

Конечно, чтобы полностью разобраться в представленных примерах, нужно обладать базовыми знаниями JavaScript.

Нововведения JavaScript в ES2020:

Метод String.protype.matchAll

При сопоставлении строки с регулярным выражением метод matchAll() возвращает итератор по всем результатам, включая группы захвата.

какая версия ecmascript последняя. Смотреть фото какая версия ecmascript последняя. Смотреть картинку какая версия ecmascript последняя. Картинка про какая версия ecmascript последняя. Фото какая версия ecmascript последняя

Динамический import()

какая версия ecmascript последняя. Смотреть фото какая версия ecmascript последняя. Смотреть картинку какая версия ecmascript последняя. Картинка про какая версия ecmascript последняя. Фото какая версия ecmascript последняя

BigInt — целые числа произвольной длины

какая версия ecmascript последняя. Смотреть фото какая версия ecmascript последняя. Смотреть картинку какая версия ecmascript последняя. Картинка про какая версия ecmascript последняя. Фото какая версия ecmascript последняя

Метод Promise.allSettled

Метод Promise.allSettled возвращает промис с массивом состояний промисов, но только после того, как все исходные промисы были завершены. Мы говорим, что промис завершен, если он не находится в ожидании, то есть либо выполнен, либо отклонен.

какая версия ecmascript последняя. Смотреть фото какая версия ecmascript последняя. Смотреть картинку какая версия ecmascript последняя. Картинка про какая версия ecmascript последняя. Фото какая версия ecmascript последняя

Стандартизованный объект globalThis

Объект globalThis не был стандартизован до появления ES10. В готовом коде его приходилось приводить к стандарту для различных платформ самостоятельно, прописывая нечто громоздкое, как в примере ниже.

какая версия ecmascript последняя. Смотреть фото какая версия ecmascript последняя. Смотреть картинку какая версия ecmascript последняя. Картинка про какая версия ecmascript последняя. Фото какая версия ecmascript последняя

Механизм выполнения цикла for-in

Стандарт ECMA-262 оставляет порядок обработки конструкции for (a in b) почти полностью неопределенным, но реальные движки все же пытаются быть последовательными в некоторых случаях.

Неоднократные попытки достичь согласия в определении точного порядка цикла for-in проваливались. Частично это объясняется тем, что все движки имеют свое специфическое применение, что является результатом большой работы, которую совершенно не хотелось пересматривать.

Оператор Nullish Coalescing

какая версия ecmascript последняя. Смотреть фото какая версия ecmascript последняя. Смотреть картинку какая версия ecmascript последняя. Картинка про какая версия ecmascript последняя. Фото какая версия ecmascript последняя

Этот метод хорошо работает для обычных значений null или undefined, но существует ряд ложных значений, которые могут давать неожиданные результаты.

какая версия ecmascript последняя. Смотреть фото какая версия ecmascript последняя. Смотреть картинку какая версия ecmascript последняя. Картинка про какая версия ecmascript последняя. Фото какая версия ecmascript последняя

Оператор Optional Chaining

При обращении к свойству, расположенному глубоко в древовидной структуре, зачастую приходится добавлять проверки на существование промежуточных узлов.

Оператор Optional Chaining (оператор опциональных цепочек) позволяет разработчикам обрабатывать много подобных случаев без повторов и/или присвоения промежуточных результатов временным переменным.

какая версия ecmascript последняя. Смотреть фото какая версия ecmascript последняя. Смотреть картинку какая версия ecmascript последняя. Картинка про какая версия ecmascript последняя. Фото какая версия ecmascript последняя

какая версия ecmascript последняя. Смотреть фото какая версия ecmascript последняя. Смотреть картинку какая версия ecmascript последняя. Картинка про какая версия ecmascript последняя. Фото какая версия ecmascript последняя

Оператор объединения с неопределенным значением часто применим в случаях, когда отсутствие результата не должно выражаться значением undefined.

какая версия ecmascript последняя. Смотреть фото какая версия ecmascript последняя. Смотреть картинку какая версия ecmascript последняя. Картинка про какая версия ecmascript последняя. Фото какая версия ecmascript последняя

Заключение

JavaScript — живой язык, и это очень благотворно влияет на веб-разработку. Мы наблюдаем его динамичное развитие с момента появления ES6 в 2015 году, а в этой статье освещаем возможности версии ES2020.

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

Источник

EcmaScript 10 — JavaScript в этом году (ES2019)

Стандартизация JS перешла на годичный цикл обновлений, а начало года — отличное время для того чтобы узнать, что нас ждёт в юбилейной — уже десятой редакции EcmaScript!

На сегодняшний день в Stage 4 # — всего несколько предложений.

какая версия ecmascript последняя. Смотреть фото какая версия ecmascript последняя. Смотреть картинку какая версия ecmascript последняя. Картинка про какая версия ecmascript последняя. Фото какая версия ecmascript последняя
Автор фото: kasper.green; Жёлтый магнит: elfafeya.art & kasper.green

Содержание

Пять стадий #

Stage 4 — Final #

Stage 3 — Pre-release #

Итоги #

Пять стадий

Stage 0Strawman Наметка Идея, которую можно реализовать через Babel-плагин.;

Stage 1Proposal Предложение Проверка жизнеспособности идеи.;

Stage 2Draft Черновик Начало разработки спецификации.;

Stage 3Candidate Кандидат Предварительная версия спецификации.;

Stage 4 ֍ Finished Завершён Финальная версия спецификации на этот год.

Мы рассмотрим только Stage 4 — де-факто, вошедший в стандарт.

И Stage 3 — который вот-вот станет его частью.

֍ Stage 4

Эти изменения уже вошли в стандарт.

Необязательный аргумент у catch

До ES10 блок catch требовал обязательного аргумента для сбора информации об ошибке, даже если она не используется:

какая версия ecmascript последняя. Смотреть фото какая версия ecmascript последняя. Смотреть картинку какая версия ecmascript последняя. Картинка про какая версия ecmascript последняя. Фото какая версия ecmascript последняя
Edge пока не обновлён до ES10, и ожидаемо валится с ошибкой

какая версия ecmascript последняя. Смотреть фото какая версия ecmascript последняя. Смотреть картинку какая версия ecmascript последняя. Картинка про какая версия ecmascript последняя. Фото какая версия ecmascript последняя
Мой Chrome уже обновился до ES10, а местами и до Stage 3. Дальше скриншоты будут из Chrome

Доступ к описанию символьной ссылки

Описание символьной ссылки можно косвенно получить методом toString():

Начиная с ES10 у символов появилось свойство description, доступное только для чтения. Оно позволяет без всяких танцев с бубном получить описание символа:

В случае если описание не задано, вернётся — undefined :

Строки EcmaScript совместимые с JSON

Строки ECMAScript до десятой версии — нет.

какая версия ecmascript последняя. Смотреть фото какая версия ecmascript последняя. Смотреть картинку какая версия ecmascript последняя. Картинка про какая версия ecmascript последняя. Фото какая версия ecmascript последняя

C ES10 строками — всё в порядке:

какая версия ecmascript последняя. Смотреть фото какая версия ecmascript последняя. Смотреть картинку какая версия ecmascript последняя. Картинка про какая версия ecmascript последняя. Фото какая версия ecmascript последняя

Если реализация не может создать строку исходного кода, соответствующую этим критериям, она должна вернуть строку, для которой eval будет выброшено исключение с ошибкой синтаксиса.

уточнить «функционально эквивалентное» требование;

стандартизировать строковое представление встроенных функций и хост-объектов;

уточнить требования к представлению на основе «фактических характеристик» объекта;

убедиться, что синтаксический анализ строки содержит то же тело функции и список параметров, что и оригинал;

для функций, определенных с использованием кода ECMAScript, toString должен возвращать фрагмент исходного текста от начала первого токена до конца последнего токена, соответствующего соответствующей грамматической конструкции;

для встроенных функциональных объектов toStringне должны возвращать ничего, кроме NativeFunction;

для вызываемых объектов, которые не были определены с использованием кода ECMAScript, toString необходимо вернуть NativeFunction;

для функций, создаваемых динамически (конструкторы функции или генератора) toString, должен синтезировать исходный текст;

для всех других объектов, toString должен бросить TypeError исключение.

Источник

Новые возможности ES2021 / ES12

Ожидается, что версия ECMAScript 2021 будет выпущена в июне 2021 года. Вот некоторые из функций, которые могут оказаться в ES2021 или ES12. Список подготовлен на основе ECMAScript Proposals и новых функций, выпущенных движком Google Chrome V8.

Все функции, перечисленные ниже, на момент написания поддерживаются в сборке Google Chrome Canary (версия браузера Google Chrome, поддерживающая экспериментальные возможности).

Метод String replaceAll()

String.prototype.replaceAll() заменяет все вхождения строки другим строковым значением.

В настоящее время в JavaScript у строк есть метод replace(). Его можно использовать для замены подстроки другой строкой.

Если входной шаблон для замены является строкой, метод replace() заменяет только первое вхождение. Поэтому в коде второе вхождение «Back» не заменяется.

Мы можем сделать полную замену, только если предоставим шаблон для замены в виде регулярного выражения.

String.prototype.replaceAll() пытается произвести замену всех вхождений, даже если входной шаблон является строкой.

Приватные методы

Приватные методы могут быть доступны только внутри класса, в котором они определены. Имена приватных методов начинаются с символа #.

Поскольку setType() является приватным методом, personObj.setType возвращает значение undefined. Попытка использовать undefined в качестве функции вызывает ошибку TypeError.

Приватные аксессоры

Функции-аксессоры (get/set) можно сделать приватными, добавив # к имени функции.

В приведенном выше коде ключевые слова get и set делают name аксессором. Несмотря на то, что name выглядит как функция, его можно читать как обычное свойство.

WeakRef

WeakRef означает слабые ссылки (Weak References). В основном слабые ссылки используются для реализации кэшей или маппингов больших объектов. В таких сценариях мы не хотим удерживать большое количество памяти надолго, сохраняя редко используемый кэш или маппинг. Мы можем разрешить сборку мусора для памяти в ближайшее время, а позже, если она нам снова понадобится, мы можем создать свежий кэш.

Рассмотрим следующий код:

При выполнении указанного выше кода через 2 секунды выводится «Backbencher». В зависимости от того, как мы используем функцию callback(), переменная aBigObj может храниться в памяти вечно.

Давайте сделаем aBigObj слабой ссылкой.

WeakRef создается с помощью new WeakRef(). Позже ссылка читается с помощью метода .deref(). Внутри асинхронной функции первый setTimeout() обязательно напечатает значение name. Это гарантируется на первом этапе цикла обработки событий после создания слабой ссылки.

Но нет гарантии, что второй setTimeout() напечатает «Backbencher». Слабая ссылка могла быть освобождена сборщиком мусора. Поскольку сборка мусора в разных браузерах работает по-разному, мы не можем гарантировать результат. Вот почему мы используем WeakRef в таких ситуациях, как управление кэшем.

Финализаторы

Здесь registry является экземпляром FinalizationRegistry. Функция обратного вызова (коллбек), переданная в FinalizationRegistry, срабатывает при сборке мусора.

какая версия ecmascript последняя. Смотреть фото какая версия ecmascript последняя. Смотреть картинку какая версия ecmascript последняя. Картинка про какая версия ecmascript последняя. Фото какая версия ecmascript последняя

Promise.any() и AggregateError

Promise.any() успешно завершается, если успешно завершился любой из предоставленных в качестве аргументов промис. Ниже у нас есть 3 промиса, которые выполняются в случайное время.

Promise.any() возвращает результат первого успешно завершившегося промиса среди p1, p2 и p3.

Что, если ни один из промисов не завершится успешно? В таком случае Promise.any() сгенерирует исключение AggregateError. Нам нужно поймать это исключение и обработать.

В демонстрационных целях в Promise.any() передается только один промис. И этот промис завершается «с ошибкой» (reject). Приведенный выше код выведет следующую ошибку в консоли.

какая версия ecmascript последняя. Смотреть фото какая версия ecmascript последняя. Смотреть картинку какая версия ecmascript последняя. Картинка про какая версия ecmascript последняя. Фото какая версия ecmascript последняя

Оператор логического присваивания

Оператор логического присваивания объединяет логические операции (&&, || или ??) с присваиванием.

Строка 3 эквивалентна следующему выражению:

Как и в случае с &&, мы можем поступить так же и с логическими операциями || и .

Оператор логического присваивания с ||

Строка 3 эквивалентна следующему выражению:

Это означает, что операция присваивания происходит, только если x является ложным значением. В нашем коде x содержит 1, что является истинным значением, и, следовательно, присваивания не происходит. Вот почему наш код выводит 1 в консоли.

В строке 2, если значение a равно null или undefined, правая часть ?? вычисляется и присваивается переменной b.

Давайте теперь рассмотрим ?? вместе с =.

Строка 2 в коде выше эквивалентна следующему выражению:

Здесь значение x равно undefined. Таким образом, выражение в правой части вычисляется и устанавливает x равным 2.

Источник

ES6, ES8, ES2017: что такое ECMAScript и чем это отличается от JavaScript

Авторизуйтесь

ES6, ES8, ES2017: что такое ECMAScript и чем это отличается от JavaScript

Изучение JavaScript может сбить с толку по множеству причин, и одна из них — акронимы. Чтобы не дать сокращениям сбить вас с толку, в этой статье мы разберём их значения и историю возникновения.

Что такое ECMAScript?

Сначала немного истории. JavaScript создавался как скриптовый язык для Netscape. После чего он был отправлен в ECMA International для стандартизации (ECMA — это ассоциация, деятельность которой посвящена стандартизации информационных и коммуникационных технологий). Это привело к появлению нового языкового стандарта, известного как ECMAScript.

Последующие версии JavaScript уже были основаны на стандарте ECMAScript. Проще говоря, ECMAScript — стандарт, а JavaScript — самая популярная реализация этого стандарта.

Что такое ES? История версий

ES — это просто сокращение для ECMAScript. Каждое издание ECMAScript получает аббревиатуру ES с последующим его номером. Всего существует 8 версий ECMAScript. ES1 была выпущена в июне 1997 года, ES2 — в июне 1998 года, ES3 — в декабре 1999 года, а версия ES4 — так и не была принята. Не будем углубляться в эти версии, так как они морально устарели, а рассмотрим только последние четыре.

ES5 был выпущен в декабре 2009 года, спустя 10 лет после выхода третьего издания. Среди изменений можно отметить:

Версия ES6/ES2015 вышла в июне 2015 года. Это также принесло некую путаницу в связи с названием пакета, ведь ES6 и ES2015 — это одно и то же. С выходом этого пакета обновлений комитет принял решение перейти к ежегодным обновлениям. Поэтому издание было переименовано в ES2015, чтобы отражать год релиза. Последующие версии также называются в соответствии с годом их выпуска. В этом обновлении были сделаны следующие изменения:

4–5 декабря, Онлайн, Беcплатно

ES2016 (ES7) вышла в июне 2016 года. Среди изменений в этой версии ECMAScript можно отметить:

Спустя еще год выходит версия ES2017 (ES8). Данный стандарт получил следующие изменения:

Источник

Версии Javascript

JavaScript был придуман Бренданом Эйхом (Brendan Eich) в 1995 году и стал стандартом ECMA в 1997 году. Официальное название стандарта — ECMA. А официальное названия языка — ECMAScript. С 2015 года версию языка ECMAScript называют по году (ECMAScript 2015).

Редакции ECMAScript

ВерсияОфициальное названиеОписание
1ECMAScript 1 (1997)Первая редакция.
2ECMAScript 2 (1998)Внесены редакционные правки.
3ECMAScript 3 (1999)Добавлены регулярные выражения.
Добавлен оператор try/catch.
4ECMAScript 4Никогда не выходил.
5ECMAScript 5 (2009)Добавлен «строгий режим».
Добавлена поддержка JSON.
Добавлен String.trim().
Добавлен Array.isArray().
Добавлены методы обхода элементов массива.
5.1ECMAScript 5.1 (2011)Внесены редакционные правки.
6ECMAScript 2015Добавлены ключевые слова let и const.
Добавлены значения параметров по умолчанию.
Добавлен Array.find().
Добавлен Array.findIndex().
7ECMAScript 2016Добавлен оператор возведения в степень (**).
Добавлен Array.prototype.includes.
8ECMAScript 2017Добавлен «паддинг» строки (дополнение до нужной длины).
Добавлены новые свойства объекта Object.
Добавлены асинхронные функции.
Добавлены разделяемая память и атомарные операции.
9ECMAScript 2018Добавлены свойства rest / spread.
Добавлены асинхронные итерации.
Добавлен Promise.finally().
Добавления в объект RegExp.

ECMAScript часто сокращается до ES.

Поддержка браузерами

ECMAScript 3 полностью поддерживается всеми браузерами.

ECMAScript 5 поддерживается всеми современными браузерами.

Поддержка браузерами ES5 (2009)

БраузерВерсияНачиная с
Chrome23сентябрь 2012
Firefox21апрель 2013
IE9*март 2011
IE / Edge10сентябрь 2012
Safari6июль 2012
Opera15июль 2013

* Internet Explorer 9 не поддерживает директиву ECMAScript 5 «use strict».

Поддержка браузерами ES6 (2015)

БраузерВерсияНачиная с
Chrome58апрель 2017
Firefox54июнь 2017
Edge14август 2016
Safari10сентябрь 2016
Opera55август 2017

Internet Explorer не поддерживает ECMAScript 2015.

Поддержка браузерами ES7 (2016)

JavaScript / ECMAScript

JavaScript был разработан для Netscape. Первым браузером, поддерживающим JavaScript, стал вышедший в 1996 году браузер Netscape 2. После Netscape компания Mozilla foundation продолжила разработку JavaScript для своих браузеров Firefox. Последняя версия JavaScript это 1.8.5 (идентична ECMAScript 5).

ECMAScript был разработан Ecma International после адаптации JavaScript. Первая редакция ECMAScript вышла в 1997 году.

Следующая таблица показывает, как соотносятся номера версий этих продуктов:

ГодJavaScriptECMAБраузер
19961.0Netscape 2
1997ECMAScript 1IE 4
19981.3Netscape 4
1999ECMAScript 2IE 5
2000ECMAScript 3IE 5.5
20001.5Netscape 6
20001.5Firefox 1
2011ECMAScript 5IE 9 (за исключением «use strict»)
20111.8.5Firefox 4 (за исключением начальных нулей в parseInt)
2012IE 10
2012Chrome 23
2012Safari 6
2013Firefox 21
2013Opera 15
2015ECMAScript 2015Частично поддерживается всеми браузерами

Internet Explorer 4 и Netscape 4.06 были первыми браузерами, которые стали поддерживать ECMAScript 1.

Internet Explorer 5 был первым браузером, который стал поддерживать ECMAScript 2.

Internet Explorer 5.5 и Netscape 6 были первыми браузерами, которые стали поддерживать ECMAScript 3.

Internet Explorer 9 и Firefox 3.5 были первыми браузерами, которые стали поддерживать ECMAScript 5. При этом IE 9 не поддерживает директиву ECMAScript 5 «use strict».

Chrome 23, IE 10 и Safari 6 были первыми браузерами с полной поддержкой ECMAScript 5.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *