ECMAScript 2019
Номер версии JavaScript
Старые версии JS называются по номерам: ES5 (2009) и ES6 (2015).
С 2016 года версии называются по годам: ECMAScript 2016, 2017, 2018, 2019, ...
Новые функции ES2019:
- String.trimStart()
- String.trimEnd()
- Object.fromEntries
- Опциональная привязка catch
- Array.flat()
- Array.flatMap()
- Переработанный Array.Sort()
- Переработанный JSON.stringify()
- Разделители, разрешенные в строковых литералах
- Переработанный Function.toString()
Предупреждение
Эти функции относительно новые.
Старые браузеры могут потребовать альтернативного кода (Polyfill)
Метод строки JavaScript trimStart()
ES2019 добавил метод String в JavaScript trimStart()
.
trimStart()
Метод работает так же, как trim()
Аналогично, но удаляет пробельные символы только с начала строки.
Пример
let text1 = " Hello World! "; let text2 = text1.trimStart();
С января 2020 года все современные браузеры поддерживают JavaScript String trimStart():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
апреля 2018 года | января 2020 года | июня 2018 года | сентября 2018 года | мая 2018 года |
Метод строки JavaScript trimEnd()
ES2019 добавил для JavaScript trimEnd()
методы строк.
trimEnd()
Метод работает так же, как trim()
Аналогично, но удаляет пробельные символы только с конца строки.
Пример
let text1 = " Hello World! "; let text2 = text1.trimEnd();
С января 2020 года все современные браузеры поддерживают JavaScript String trimEnd():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
апреля 2018 года | января 2020 года | июня 2018 года | сентября 2018 года | мая 2018 года |
Метод объекта JavaScript fromEntries()
ES2019 добавил для JavaScript fromEntries()
Метод объекта.
fromEntries()
Метод создает объект из итерируемых пар ключ/значение.
Пример
const fruits = [ ["apples", 300], ["pears", 900], ["bananas", 500] ]; const myObj = Object.fromEntries(fruits);
С января 2020 года все современные браузеры поддерживают JavaScript String trimEnd():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 73 | Edge 79 | Firefox 63 | Safari 12.1 | Opera 60 |
марта 2019 года | января 2020 года | октября 2018 года | марта 2019 года | апреля 2019 года |
Опциональная привязка catch
С ES2019 можно опустить параметр catch, если он не нужен:
Пример
до 2019 года:
try { // код catch (err) { // код }
после 2019 года:
try { // код catch { // код }
С января 2020 года все современные браузеры поддерживают опциональную привязку catch:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 58 | Safari 11.1 | Opera 53 |
апреля 2018 года | января 2020 года | января 2018 года | марта 2018 года | мая 2018 года |
Метод массива JavaScript flat()
ES2019 добавил для JavaScript flat()
Метод массива.
flat()
Метод создает новый массив, распечатывая вложенный массив.
Пример
const myArr = [[1,2],[3,4],[5,6]]; const newArr = myArr.flat();
С января 2020 года все современные браузеры поддерживают JavaScript Array flat():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 69 | Edge 79 | Firefox 62 | Safari 12 | Opera 56 |
сентября 2018 года | января 2020 года | сентября 2018 года | сентября 2018 года | сентября 2018 года |
Метод массива JavaScript flatMap()
ES2019 добавил для JavaScript flatMap()
Метод массива.
flatMap()
Метод сначала маппинг всех элементов массива, а затем создает новый массив, распечатывая массив.
Пример
const myArr = [1, 2, 3, 4, 5, 6]; const newArr = myArr.flatMap((x) => x * 2);
Стабильный метод массива sort()
ES2019 Измененияметода sort массива.
До 2019 года стандарт позволял нестабильные алгоритмы сортировки, такие как QuickSort.
После ES2019 браузеры должны использовать стабильные алгоритмы сортировки:
Когда элементы сортируются по значению, эти элементы должны сохранять свои относительные позиции по отношению к другим элементам с таким же значением.
Пример
const myArr = [ {name:"X00",price:100 }, {name:"X01",price:100 }, {name:"X02",price:100 }, {name:"X03",price:100 }, {name:"X04",price:110 }, {name:"X05",price:110 }, {name:"X06",price:110 }, {name:"X07",price:110 } ];
В примере выше, когда результаты сортируются по цене, имена не должны появляться в других относительных положениях, как показано ниже:
X01 100 X03 100 X00 100 X03 100 X05 110 X04 110 X06 110 X07 110
Переработанный JSON.stringify()
ES2019 Измененияметода stringify JSON.
До 2019 года JSON не мог строковать символы, закодированные с помощью \.
Пример
let text = JSON.stringify("\u26D4");
До ES2019 использование JSON.stringify() на кодовых точках UTF-8 (U+D800 до U+DFFF) возвращало поврежденные символы Unicode, например ���.
После этого исправления строки с кодовыми точками UTF-8 (U+D800 до U+DFFF) могут безопасно преобразовываться с помощью JSON.stringify() и восстанавливаться в исходную строку с помощью JSON.parse().
Символы разделителя
Теперь в литеральных строках разрешается использовать символы分行 и символы абзаца (\u2028
и \u2029
)
До 2019 года эти считались символами分行 и вызывали ошибки исключений:
Пример
// Это было эффективно в ES2019: let text = "\u2028";
Внимание
Теперь, JavaScript и JSON имеют одинаковые правила.
До ES2019:
text = JSON.parse('"\u2028"') будет преобразован в ''。
text = '"\u2028"' дастГрамматическая ошибка.
Переработанный Function toString()
ES2019 ИзмененияМетод Function toString()
Метод toString() возвращает строку, представляющую исходный код функции.
С 2019 года toString() должен возвращать исходный код функции, включая комментарии, пробелы и детали синтаксиса.
До 2019 года различные браузеры возвращали различные версии функций (например, без комментариев и пробелов). С 2019 года функция должна возвращаться полностью в том виде, в котором она была написана.
Пример
function myFunction(p1, p2) { return p1 * p2; }