ECMAScript 2019

Numer wersji JavaScript

Starsze wersje JS są nazywane liczbami: ES5 (2009) i ES6 (2015).

Od 2016 roku wersje są nazywane rokiem: ECMAScript 2016, 2017, 2018, 2019, ...

Nowe cechy ES2019:

Ostrzeżenie

Te cechy są stosunkowo nowe.

Starsze przeglądarki mogą wymagać kodu zastępczego (Polyfill)

Metoda stringu JavaScript trimStart()

ES2019 dodał metodę String do JavaScript trimStart()

trimStart() Działanie metody jest podobne do trim() Podobnie, ale usuwa tylko spację z początku ciągu.

Przykład

let text1 = "     Hello World!     ";
let text2 = text1.trimStart();

Spróbuj sam

Od stycznia 2020 roku wszystkie nowoczesne przeglądarki obsługują JavaScript String trimStart():

Chrome Edge Firefox Safari Opera
Chrome 66 Edge 79 Firefox 61 Safari 12 Opera 50
kwiecień 2018 roku styczeń 2020 roku czerwiec 2018 roku wrzesień 2018 roku maj 2018 roku

Metoda stringu JavaScript trimEnd()

ES2019 dodał do JavaScripta trimEnd() metod łańcucha znaków.

trimEnd() Działanie metody jest podobne do trim() Podobnie, ale usuwa tylko spację z końca ciągu.

Przykład

let text1 = "     Hello World!     ";
let text2 = text1.trimEnd();

Spróbuj sam

Od stycznia 2020 roku wszystkie nowoczesne przeglądarki wspierają JavaScript String trimEnd():

Chrome Edge Firefox Safari Opera
Chrome 66 Edge 79 Firefox 61 Safari 12 Opera 50
kwiecień 2018 roku styczeń 2020 roku czerwiec 2018 roku wrzesień 2018 roku maj 2018 roku

Metoda obiektu JavaScript fromEntries()

ES2019 dodał do JavaScripta fromEntries() Metoda obiektu.

fromEntries() Metoda tworzy obiekt z iterowalnych par klucz-wartość.

Przykład

const fruits = [
["apples", 300],
["pears", 900],
["bananas", 500]
];
const myObj = Object.fromEntries(fruits);

Spróbuj sam

Od stycznia 2020 roku wszystkie nowoczesne przeglądarki wspierają JavaScript Object fromEntries():

Chrome Edge Firefox Safari Opera
Chrome 73 Edge 79 Firefox 63 Safari 12.1 Opera 60
marzec 2019 roku styczeń 2020 roku październik 2018 roku marzec 2019 roku kwiecień 2019 roku

Opcjonalne bindowanie catch

Od ES2019, jeśli to nie jest konieczne, można pominąć parametr catch:

Przykład

przed 2019 rokiem:

try {
// kod
catch (err) {
// kod
}

po 2019 roku:

try {
// kod
catch {
// kod
}

Od stycznia 2020 roku wszystkie nowoczesne przeglądarki wspierają opcjonalne bindowanie catch:

Chrome Edge Firefox Safari Opera
Chrome 66 Edge 79 Firefox 58 Safari 11.1 Opera 53
kwiecień 2018 roku styczeń 2020 roku styczeń 2018 roku marzec 2018 roku maj 2018 roku

Metoda tablicy JavaScript flat()

ES2019 dodał do JavaScripta flat() Metoda tablicy.

flat() Metoda tworzy nową tablicę poprzez rozpakowanie wewnętrznych tablic.

Przykład

const myArr = [[1,2],[3,4],[5,6]];
const newArr = myArr.flat();

Spróbuj sam

Od stycznia 2020 roku wszystkie nowoczesne przeglądarki wspierają JavaScript Array flat():

Chrome Edge Firefox Safari Opera
Chrome 69 Edge 79 Firefox 62 Safari 12 Opera 56
wrzesień 2018 roku styczeń 2020 roku wrzesień 2018 roku wrzesień 2018 roku wrzesień 2018 roku

Metoda tablicy JavaScript flatMap()

ES2019 dodał do JavaScripta flatMap() Metoda tablicy.

flatMap() Metoda najpierw mapuje wszystkie elementy tablicy, a następnie tworzy nową tablicę poprzez rozpakowanie tablicy.

Przykład

const myArr = [1, 2, 3, 4, 5, 6];
const newArr = myArr.flatMap((x) => x * 2);

Spróbuj sam

Stabilna metoda tablicy sort()

ES2019 Aktualizacjametody Array.sort().

Przed 2019 rokiem, specyfikacja pozwalała na niestabilne algorytmy sortowania, takie jak QuickSort.

Po ES2019, przeglądarki muszą używać stabilnych algorytmów sortowania:

Gdy elementy są sortowane według wartości, te elementy muszą zachować ich względne położenie do innych elementów o tej samej wartości.

Przykład

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 }
];

Spróbuj sam

W powyższym przykładzie, wyniki排序时不允许出现在其他相对位置的名称,如下所示:

X01 100
X03 100
X00 100
X03 100
X05 110
X04 110
X06 110
X07 110

Ponownie zredagowana JSON.stringify()

ES2019 Aktualizacjametody JSON.stringify().

Przed 2019 rokiem, JSON nie mógł serializować znaków zakodowanych za pomocą \.

Przykład

let text = JSON.stringify("\u26D4");

Spróbuj sam

Przed ES2019, użycie JSON.stringify() na kodach UTF-8 (U+D800 do U+DFFF) zwracało zniszczone znaki Unicode, takie jak ���.

Po tej aktualizacji, łańcuchy o kodach UTF-8 mogą być bezpiecznie przekształcane za pomocą JSON.stringify() i przywracane do oryginalnych ciągów znaków za pomocą JSON.parse().

Symbol rozdzielający

Dla tekstu łańcuchowego teraz dozwolone są znaki rozdzielające wiersze i akapity (\u2028 i \u2029)

Przed 2019 rokiem, te były traktowane jako znaki końca wiersza i powodowały błędy wyjątkowe:

Przykład

// To jest poprawne w ES2019:
let text = "\u2028";

Spróbuj sam

Uwaga

Teraz, JavaScript i JSON mają te same zasady.

Przed ES2019:

text = JSON.parse('"\u2028"') z解析uje jako ''。

text = '"\u2028"' zwróciBłąd gramatyczny

Ponownie zredagowana Function toString()

ES2019 AktualizacjaMetoda Function toString()

Metoda toString() zwraca ciąg znaków reprezentujący kod źródłowy funkcji.

Od 2019 roku metoda toString() musi zwracać kod źródłowy funkcji, w tym komentarze, spacje i szczegóły gramatyczne.

Przed 2019 rokiem różne przeglądarki zwracały różne warianty funkcji (np. bez komentarzy i spacji). Od 2019 roku funkcja powinna być zwracana w sposób zgodny z jej zapisem.

Przykład

function myFunction(p1, p2) {
  return p1 * p2;
}

Spróbuj sam