Последнее в JavaScript

Сегодня мы рассмотрим возможности ECMAScript 2015 года:

Вступление

ES2020 - это версия ECMAScript, соответствующая 2020 году. Эта версия не включает столько новых функций, сколько появилось в ES6 (2015). Однако были добавлены некоторые полезные функции.

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

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

Новые возможности JavaScript в ES2020:

➡️ String.prototype.matchAll
➡️ import ()
➡️ BigInt
➡️ Promise.allSettled
➡️ globalThis
➡️ механика for-in
➡️ Дополнительная цепочка
➡️ Нулевой оператор объединения

String.protype.matchAll

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

Динамический импорт

Dynamic import() возвращает обещание для объекта пространства имен модуля запрошенного модуля. Следовательно, теперь импорт можно назначить переменной с помощью async/await.

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

BigInt - седьмой примитивный тип, целое число произвольной точности. Переменные теперь могут представлять 253 числа, а не только максимальное значение 9007199254740992.

Promise.allSettled

Promise.allSettled возвращает обещание, которое выполнено с помощью массива моментальных снимков состояния обещания, но только после того, как все исходные обещания выполнены; т.е. стать либо выполненным, либо отвергнутым.

Мы говорим, что обещание выполнено, если оно не отложено; т.е. если оно выполнено или отклонено.

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

Глобальный this не был стандартизирован до ES10.
В производственном коде вы бы «стандартизировали» его для нескольких платформ самостоятельно, написав это чудовище:

For-in Механика

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

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

В заключение, различные движки договорились о том, как итерируются свойства при использовании структуры управления for (a in b), чтобы поведение было стандартизовано.

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

При выполнении доступа к свойству часто требуется предоставить значение по умолчанию, если результат доступа к этому свойству равен нулю или не определен. В настоящее время типичный способ выразить это намерение в JavaScript - использовать оператор ||.

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

Оператор объединения с нулевым значением предназначен для лучшей обработки таких случаев и служит для проверки равенства значений с нулевым значением (null или undefined). Если выражение в левой части оператора ?? оценивается как неопределенное или нулевое, возвращается его правая часть.

Необязательная цепочка

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

Необязательный оператор цепочки позволяет разработчикам обрабатывать многие из этих случаев без повторения и / или присвоения промежуточных результатов во временных переменных.

Кроме того, многие API возвращают либо object, либо null/undefined, и можно извлечь свойство из результата, только если оно не равно нулю:

Когда для отсутствующего случая требуется какое-либо значение, отличное от undefined, это обычно можно обработать с помощью оператора объединения Nullish:

Заключение

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

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