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

Список новых функций, обсуждаемых в этой статье

  • String.prototype.replaceAll
  • Обещание.любое
  • Логические операторы и выражения присваивания
  • Числовые разделители
  • Международный.ListFormat
  • Параметры dateStyle и timeStyle для Intl.DateTimeFormat

String.prototype.replaceAll

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

Предлагаемый метод replaceAll() возвращает новую строку, в которой все совпадения шаблона заменены заменой. Шаблон может быть строкой или регулярным выражением, а замена может быть строкой или функцией, которая выполняется для каждого совпадения.

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

Обещание.любое()

Следующая интересная функция, называемая promise.any(). Она возвращает значение, как только достигает первого разрешенного промиса из списка/массива промисов. Если все обещания отклонены, будет выдано агрегированное сообщение об ошибке.

Он отличается от Promise.race() тем, что метод, когда одно из заданных обещаний либо разрешается, либо отклоняется.

Даже если обещание отклонено раньше, чем разрешенное обещание, Promise.any() вернет первое разрешенное обещание.

Когда все обещания отклонены, выдается AggregateError.

Логические операторы и выражения присваивания

С ES2021 мы сможем комбинировать логические операторы (&&, || и ??) с выражением присваивания (=) аналогично тому, как это уже возможно сделать в Ruby.

Если вы пропустили ES2020, возможно, вы не знаете об ??, который является оператором нулевого объединения. Давайте посмотрим на пример:

const a = null ?? 'test';
// 'test'
const b = 0 ?? 'test';
// 0

Оператор нулевого объединения возвращает правую сторону, если левая сторона равна null или undefined, в противном случае он возвращает левую сторону- боковая сторона. В первом примере левая часть была null, поэтому она вернула правую часть, а во втором примере она вернула левую часть, потому что это не было ни null, ни undefined.

Возвращаясь к материалу ES2021, в JavaScript у нас уже есть много операторов присваивания, как в следующем примере:

let a = 0;
a +=2;
// 2

Но с этим новым предложением мы сможем сделать следующее:

a ||= b;
// equivalent to a = a || b

c &&= d;
// equivalent to c = c && d

e ??= f;
// equivalent to e = e ?? f

Давайте пройдемся по каждому по одному:

  • a ||= b вернет a, если a является истинным значением, или b, если a ложно.
  • c &&= d вернет d, если оба c и d верны, или c в противном случае.
  • e ??= f вернет f, если e равно null или undefined, иначе вернет e.

Числовые разделители

Введение числовых разделителей упростит чтение числовых значений за счет использования символа _ (подчеркивания) для разделения групп цифр.

Давайте посмотрим на другие примеры:

Международный.ListFormat

Объект Intl.ListFormat является конструктором для объектов, которые позволяют форматировать список с учетом языка.

Смотреть на пример проще, чем объяснять:

Вы не ограничены английским, давайте попробуем несколько разных языков:

Параметры dateStyle и timeStyle для Intl.DateTimeFormat

Мы можем использовать dateStyle и timeStyle для запроса даты и времени определенной локали заданной длины.

Вы можете передать любую локаль, которую хотите, а также одновременно передать параметры dateStyle и timeStyle, выбирая между тремя вариантами короткий, средний и длинный, которые лучше всего соответствуют вашим потребностям. это с фантастической библиотекой JS под названием moment.js

Вывод

Каждый год, начиная с 2015 года, JavaScript получает постоянные ежегодные обновления своей спецификации с добавлением новых интересных функций. предложение как законченное. Спасибо за прочтение, как разработчику важно быть в курсе новых спецификаций языка :)

использованная литература