ECMAScript 2017
Соглашение об именах JavaScript началось с ES1, ES2, ES3, ES5 и ES6.
Но ECMAScript 2016 и 2017 не назывались ES7 и ES8.
С 2016 года новые версии именуются по годам (ECMAScript 2016/2017/2018).
Новые функции в ECMAScript 2017
В этой главе представлены новые функции ECMAScript 2017:
- Заполнение строки JavaScript
- JavaScript Object.entries
- JavaScript Object.values
- Асинхронные функции JavaScript
- Общая память JavaScript
Заполнение строки JavaScript
В ECMAScript 2017 добавлено два метода String: padStart
и padEnd
для поддержки заполнения в начале и в конце строки.
Пример
let str = "5";
str = str.padStart(4,0);
// result is 0005
Пример
let str = "5";
str = str.padEnd(4,0);
// result is 5000
Заполнение строк не поддерживается в Internet Explorer.
Firefox и Safari были первыми браузерами с поддержкой заполнения строк JavaScript:
Chrome 57 | Edge 15 | Firefox 48 | Safari 10 | Opera 44 |
Mar 2017 | Apr 2017 | Aug 2016 | Sep 2016 | Mar 2017 |
Записи объектов JavaScript
Object.entries
ECMAScript 2017 добавляет к объектам новый метод.
Метод Object.entries() возвращает массив пар ключ/значение в объекте:
Пример
const person = {
firstName : "John",
lastName : "Doe",
age : 50,
eyeColor : "blue"
};
document.getElementById("demo").innerHTML =
Object.entries(person);
Object.entries() упрощает использование объектов в циклах:
Пример
const fruits = {Bananas:300, Oranges:200, Apples:500};
let text = "";
for (let [fruit, value] of Object.entries(fruits)) {
text += fruit + ": " + value + "
";
}
Object.entries() также упрощает преобразование объектов в карты:
Пример
const fruits = {Bananas:300, Oranges:200, Apples:500};
const myMap = new Map(Object.entries(fruits));
Chrome и Firefox были первыми браузерами с поддержкой
Object.entries
:
Chrome 47 | Edge 14 | Firefox 47 | Safari 10.1 | Opera 41 |
Jun 2016 | Aug 2016 | Jun 2016 | Mar 2017 | Oct 2016 |
Значения объекта JavaScript
Object.values
аналогичны Object.entries
, но возвращают одномерный массив значений объекта:
Пример
const person = {
firstName : "John",
lastName : "Doe",
age : 50,
eyeColor : "blue"
};
document.getElementById("demo").innerHTML =
Object.values(person);
Firefox и Chrome были первыми браузерами с поддержкой
Object.values
:
Chrome 54 | Edge 14 | Firefox 47 | Safari 10.1 | Opera 41 |
Oct 2016 | Aug 2016 | Jun 2016 | Mar 2017 | Oct 2016 |
Асинхронные функции JavaScript
Ожидание тайм-аута
async function myDisplay() {
let myPromise = new Promise(function(myResolve, myReject) {
setTimeout(function() { myResolve("I love You !!"); }, 3000);
});
document.getElementById("demo").innerHTML = await myPromise;
}
myDisplay();
Firefox и Chrome были первыми браузерами с поддержкой асинхронных функций JavaScript:
Chrome 55 | Edge 15 | Firefox 52 | Safari 11 | Opera 42 |
Dec 2016 | Apr 2017 | Mar 2017 | Sep 2017 | Dec 2016 |