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 года все эти функции довольно хорошо интегрированы: