ES2020 - Что нового.
2021-05-13 | 219 Просмотров
ES2020 — это версия ECMAScript, актуальная для 2020 года. В ней не так много нововведений по сравнению с ES6, вышедшей в 2015 году, но несколько полезных функций все же есть.
И хорошие новости! Новые функции ES2020 - доработаны. А это означает, что теперь у нас есть полное представление об изменениях, происходящих в ES2020 и о новой улучшенной спецификации JavaScript.
11-я часть нашего любимого языка программирования - ECMAScript 2020 содержит несколько новых функций. Некоторые из них небольшие, но есть такие, которые могут навсегда изменить то, как мы пишем JavaScript.
В этой статье новые фичи ES2020 описываются на простых примерах кода. Вы сможете быстро понять их без каких-либо сложных разъяснений.
Метод String.protype.matchAll
Добавление в прототип объекта String нового метода matchAll
Предназначен для работы с регулярными выражениями. Он возвращает все подходящие группы в строке.
const str = "abc";
const regexp = /[a-c]/g;
const iterator = str.matchAll(regexp);
for (result of iterator) {
console.log(result);
}
// ["a", index: 0, input: "abc", groups: undefined]
// ["b", index: 1, input: "abc", groups: undefined]
// ["c", index: 2, input: "abc", groups: undefined]
BigInt
Появление нового типа данных - BigInt. Это одно из самых ожидаемых нововведений в JavaScript. Он позволяет получить разработчикам большее целочисленное представление в JS коде для обработки данных.
Для того, чтобы создать BigInt число, нам нужно просто добавить к числу букву - n. К примеру: const bn = 3000n Выведем это в консоль и получим 3000n
Стоит отметить, что BigInt нельзя использовать с другими типами данных на прямую. Если мы выведем в консоль console.log(5 + bn) то получим ошибку. Чтобы ошибки не было, необходимо привести тип данных Number к BigInt. Это можно сделать путем оборачивания числа в круглые скобки, вот так: BigInt(7) или если число присвоено переменной const numberSeven = 7, то так BigInt(numberSeven)
Экспорт модуля
Тут все очень просто. Теперь чтобы экспортировать какой-либо файл в корневой, или соседний JS приложения, нужно например прописать команду import {script} scriptю
Promise.allSettled
Функция Promise.all - он выполнялся успешно (resolves) только тогда, когда все переданные промисы были выполнены успешно. И выполнялся с ошибкой (rejects), если хотя бы один из промисов был отклонен, в то время как другие ещё могли быть в статусе ожидания (pending).
Новый allSettled ведет себя иначе. Он выполняется всякий раз, когда все промисы заканчиваются, то есть выполнились успешно или выполнились с ошибкой. Он возвращает массив, который содержит как статус промиса, так и значение (или ошибку).
Таким образом, allSettled никогда не отклоняется. Он либо в состоянии ожидания, либо выполнился успешно.
const promiseArray = [
Promise.resolve(200),
Promise.reject(""),
Promise.reject(new Error("Error")),
];
Promise.allSettled(promiseArray).then((result) => {
console.log("All Promises Settled", result);
});
// All Promises Settled
// [
// {status: "fulfilled", value: 200},
// {status: "rejected", reason: ""},
// {status: "rejected", reason: Error: Error at :4:18}
// ]
Свойство globalThis
Благодаря этому свойству появилась возможность стандартного доступа к глобальному объекту window, вне зависимости от среды разработки. globalThis гарантировано будет работать как в среде разработки где есть глобальный объект window, так и где его нет.
globalThis === window; // true
Заключение
Мы расмотрели немного основных нововведений языка JavaScript 2020. Пользуйтесь ими, активно применяйте на практике, оптимизируйте ваши веб-приложения применяя новый стандарт.