ECMAScript 2019
JavaScript Номери версій
Старі версії JS позначаються цифрами: ES5 (2009) і ES6 (2015).
З 2016 року версії мають назви за роками: ECMAScript 2016, 2017, 2018, 2019, ...
Нові функції в ES2019
- String.trimStart()
- String.trimEnd()
- Object.fromEntries
- Необов’язкова прив’язка
- Array.flat()
- Array.flatMap()
- Переглянуто Array.Sort()
- Переглянуто JSON.stringify()
- Символи-роздільники, дозволені в рядкових літералах
- Переглянуто Function.toString()
Попередження
Ці функції відносно нові.
Старішим веббраузерам може знадобитися альтернативний код (Polyfill)
JavaScript String trimStart()
ES2019 додав метод String trimStart()
до JavaScript.
Метод trimStart()
працює як trim()
, але видаляє пробіли лише на початку рядка.
JavaScript String trimStart()
підтримується в усіх сучасних браузерах із січня 2020 року:
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
Apr 2018 | Jan 2020 | Jun 2018 | Sep 2018 | May 2018 |
JavaScript String trimEnd()
ES2019 додав метод String trimEnd()
до JavaScript.
Метод trimEnd()
працює як trim()
, але видаляє пробіли лише з кінця рядка.
JavaScript String trimEnd()
підтримується в усіх сучасних браузерах із січня 2020 року:
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
Apr 2018 | Jan 2020 | Jun 2018 | Sep 2018 | May 2018 |
JavaScript Object fromEntries()
ES2019 додано Object метод fromEntries()
до JavaScript.
Метод fromEntries()
створює об’єкт із ітерованих пар ключ/значення.
Приклад
const fruits = [
["apples", 300],
["pears", 900],
["bananas", 500]
];
const myObj = Object.fromEntries(fruits);
Спробуйте самі »
JavaScript Object fromEntries()
підтримується в усіх сучасних браузерах із січня 2020 року:
Chrome 73 | Edge 79 | Firefox 63 | Safari 12.1 | Opera 60 |
Mar 2019 | Jan 2020 | Oct 2018 | Mar 2019 | Apr 2019 |
Необов’язкова прив’язка catch
У ES2019 ви можете опустити параметр catch, якщо він вам не потрібен:
Приклад
До 2019:
try {
// код
} catch (err) {
// код
}
Після 2019:
try {
// код
} catch {
// код
}
Додаткове прив’язування catch підтримується в усіх сучасних браузерах із січня 2020 року:
Chrome 66 | Edge 79 | Firefox 58 | Safari 11.1 | Opera 53 |
Apr 2018 | Jan 2020 | Jan 2018 | Mar 2018 | May 2018 |
JavaScript Array flat()
ES2019 додано метод Array flat()
до JavaScript.
Метод flat()
створює новий масив шляхом зведення вкладеного масиву.
JavaScript Array flat()
підтримується в усіх сучасних браузерах із січня 2020 року:
Chrome 69 | Edge 79 | Firefox 62 | Safari 12 | Opera 56 |
Sep 2018 | Jan 2020 | Sep 2018 | Sep 2018 | Sep 2018 |
JavaScript Array flatMap()
ES2019 додано метод Array flatMap()
до JavaScript.
Метод flatMap()
спочатку відображає всі елементи масиву, а потім створює новий масив шляхом зведення масиву.
Приклад
const myArr = [1, 2, 3, 4, 5, 6];
const newArr = myArr.flatMap((x) => x * 2);
Спробуйте самі »
Stable Array sort()
ES2019 переглянуто метод Array 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 переглянуто метод JSON stringify()
.
До 2019 року JSON не міг стрингувати символи, закодовані за допомогою \.
До ES2019 використання JSON.stringify()
JSON у кодових точках UTF-8 (U+D800 до U+DFFF) повертало пошкоджені символи Unicode, наприклад ���.
Після цієї ревізії рядки з кодовими точками UTF-8 безпечно конвертуються за допомогою JSON.stringify()
і повертаються до оригіналу за допомогою JSON.parse()
.
Роздільні символи
Символи роздільників рядків і параграфів (\u2028 і \u2029) тепер дозволені в рядкових літералах.
До 2019 року вони розглядалися як символи закінчення рядків і призводили до помилок:
Примітка
Тепер JavaScript і JSON мають однакові правила.
До ES2019:
text = JSON.parse('"\u2028"') буде парсити до ''.
text = '"\u2028"' дасть синтаксичну помилку.
Переглянуто функцію toString()
ES2019 переглянуто метод функції toString()
.
Метод toString()
повертає рядок, що представляє вихідний код функції.
З 2019 року toString() має повертати вихідний код функції, включаючи коментарі, пробіли та деталі синтаксису.
До 2019 року різні браузери повертали різні варіанти функції (наприклад, без коментарів і пробілів). З 2019 року функція має повертатися саме так, як вона написана.