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

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

В ECMAScript 2021 представлены три новых оператора логического присваивания, которые сочетают в себе концепции логических операций и присваивания. Эти новые операторы:

  • &&=
  • ||=
  • ??=

Логические операторы присваивания упрощают код и улучшают его читаемость. Вот как можно использовать эти новые операторы.

Оператор &&= выполняет логическую операцию И и присваивает результат обратно левому операнду, если левый операнд истинен; в противном случае левый операнд остается неизменным.

Пример:

let a = 5;
let b = 10;

a &&= b;
console.log(a); // 10

Оператор ||= выполняет логическую операцию ИЛИ и присваивает результат обратно левому операнду, если левый операнд неверен; в противном случае левый операнд остается неизменным.

Пример:

let c = 0;
let d = 20;

c ||= d;
console.log(c); // 20

Оператор ??= выполняет нулевую операцию объединения и присваивает правый операнд левому операнду, если левый операнд равен null или undefined; в противном случае левый операнд остается неизменным.

Пример:

let e;
let f = 30;

e ??= f;
console.log(e); // 30

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

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

Пример:

// Without numeric separator
const oneMillion = 1000000;

// With numeric separator
const oneMillionReadable = 1_000_000;

console.log(oneMillion === oneMillionReadable); // true

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

Promise.any() — это новое дополнение к ECMAScript 2021, которое позволяет разработчикам одновременно обрабатывать несколько промисов. Он принимает итерацию обещаний и возвращает обещание, которое выполняется первым обещанием, которое должно быть выполнено среди входных обещаний, или отклоняется, если все входные обещания отклонены.

Пример:

const promise1 = new Promise((resolve, reject) => 
  setTimeout(reject, 100, 'Error 1'));
const promise2 = new Promise((resolve, reject) => 
  setTimeout(resolve, 200, 'Success'));
const promise3 = new Promise((resolve, reject) => 
  setTimeout(reject, 300, 'Error 2'));

Promise.any([promise1, promise2, promise3])
  .then((value) => console.log(value)) // "Success"
  .catch((errors) => console.error(errors));

Как всегда, используйте новые функции на свой страх и риск! По состоянию на начало 2023 года все эти функции довольно хорошо интегрированы: