ECMAScript 2019

  • Предыдущая страница JS 2018
  • Следующая страница JS 2020

Номер версии JavaScript

Старые версии JS называются по номерам: ES5 (2009) и ES6 (2015).

С 2016 года версии называются по годам: ECMAScript 2016, 2017, 2018, 2019, ...

Новые функции ES2019:

Предупреждение

Эти функции относительно новые.

Старые браузеры могут потребовать альтернативного кода (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;
}

Попробуйте сами

  • Предыдущая страница JS 2018
  • Следующая страница JS 2020