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:
- String.trimStart()
- String.trimEnd()
- Object.fromEntries
- Opcjonalne bindowanie catch
- Array.flat()
- Array.flatMap()
- Prześlij ponownie Array.Sort()
- Ponownie zredagowana JSON.stringify()
- Dopuszczalne separatory w tekście ciągłym
- Prześlij ponownie Function.toString()
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();
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();
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);
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();
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);
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 } ];
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");
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";
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; }