ECMAScript 2019
JavaScript-Versionen
Alte JS-Versionen werden numerisch benannt: ES5 (2009) und ES6 (2015).
Seit 2016 werden Versionen nach Jahren benannt: ECMAScript 2016, 2017, 2018, 2019, ...
Neue Funktionen in ES2019:
- String.trimStart()
- String.trimEnd()
- Object.fromEntries
- Optionale catch-Bindung
- Array.flat()
- Array.flatMap()
- Neu überarbeitete Array.Sort()
- Neu überarbeitete JSON.stringify()
- In Zeichenkettenauflösungen erlaubte Trennzeichen
- Neu überarbeitete Function.toString()
Warnung
Diese Eigenschaften sind relativ neu.
Ältere Browser benötigen möglicherweise alternativen Code (Polyfill)
JavaScript-String-Methode trimStart()
ES2019 hat JavaScript String-Methode hinzugefügt trimStart()
.
trimStart()
Die Arbeitsweise des Methods ist ähnlich wie trim()
Ähnlich, aber nur Leerzeichen vom Anfang der Zeichenkette entfernen.
Beispiel
let text1 = " Hello World! "; let text2 = text1.trimStart();
Seit dem 1. Januar 2020 unterstützen alle modernen Browser JavaScript String trimStart():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
April 2018 | Januar 2020 | Juni 2018 | September 2018 | Mai 2018 |
JavaScript-String-Methode trimEnd()
ES2019 hat JavaScript hinzugefügt trimEnd()
Zeichenkettenmethoden.
trimEnd()
Die Arbeitsweise des Methods ist ähnlich wie trim()
Ähnlich, aber nur Leerzeichen vom Ende der Zeichenkette entfernen.
Beispiel
let text1 = " Hello World! "; let text2 = text1.trimEnd();
Seit Januar 2020 unterstützen alle modernen Browser die JavaScript String trimEnd():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
April 2018 | Januar 2020 | Juni 2018 | September 2018 | Mai 2018 |
JavaScript-Objekt-Methode fromEntries()
ES2019 hat JavaScript hinzugefügt fromEntries()
Objekt-Methode.
fromEntries()
Die Methode erstellt ein Objekt aus iterablen Schlüssel/Wert-Paaren.
Beispiel
const fruits = [ ["apples", 300], ["pears", 900], ["bananas", 500] ]; const myObj = Object.fromEntries(fruits);
Seit Januar 2020 unterstützen alle modernen Browser die JavaScript String trimEnd():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 73 | Edge 79 | Firefox 63 | Safari 12.1 | Opera 60 |
März 2019 | Januar 2020 | Oktober 2018 | März 2019 | April 2019 |
Optionale catch-Bindung
Ab ES2019 kann, wenn nicht erforderlich, der catch-Parameter weggelassen werden:
Beispiel
Vor 2019:
try { // code } catch (err) { // code }
Nach 2019:
try { // code } catch { // code }
Seit Januar 2020 unterstützen alle modernen Browser die optionale catch-Bindung:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 58 | Safari 11.1 | Opera 53 |
April 2018 | Januar 2020 | Januar 2018 | März 2018 | Mai 2018 |
JavaScript-Array-Methode flat()
ES2019 hat JavaScript hinzugefügt flat()
Array-Methode.
flat()
Die Methode erstellt ein neues Array durch das Ausflachen eingebetteter Arrays.
Beispiel
const myArr = [[1,2],[3,4],[5,6]]; const newArr = myArr.flat();
Seit Januar 2020 unterstützen alle modernen Browser die JavaScript Array flat():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 69 | Edge 79 | Firefox 62 | Safari 12 | Opera 56 |
September 2018 | Januar 2020 | September 2018 | September 2018 | September 2018 |
JavaScript-Array-Methode flatMap()
ES2019 hat JavaScript hinzugefügt flatMap()
Array-Methode.
flatMap()
Die Methode mappt zunächst alle Elemente des Arrays und erstellt dann ein neues Array durch das Ausflachen des Arrays.
Beispiel
const myArr = [1, 2, 3, 4, 5, 6]; const newArr = myArr.flatMap((x) => x * 2);
Stabile Array-Methode sort()
ES2019 Überarbeitungder Array.sort() Methode.
Vor 2019 gestattete die Norm unzuverlässige Sortieralgorithmen, wie z.B. QuickSort.
Nach ES2019 müssen Browser stabile Sortieralgorithmen verwenden:
Wenn nach einem Wert sortiert wird, müssen diese Elemente ihre relative Position zu anderen Elementen mit dem gleichen Wert beibehalten.
Beispiel
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 } ];
Im obigen Beispiel dürfen die Ergebnisse bei der Sortierung nach Preis nicht in anderen relativen Positionen der Namen auftauchen, wie folgt:
X01 100 X03 100 X00 100 X03 100 X05 110 X04 110 X06 110 X07 110
Neu überarbeitete JSON.stringify()
ES2019 Überarbeitungder JSON.stringify() Methode.
Vor 2019 konnte JSON keine mit \ kodierten Zeichen serialisieren.
Beispiel
let text = JSON.stringify("\u26D4");
Vor ES2019 würde JSON.stringify() bei Verwendung von UTF-8-Codepunkten (U+D800 bis U+DFFF) beschädigte Unicode-Zeichen zurückgeben, z.B. ���。
Nach dieser Revision können Zeichenfolgen mit UTF-8-Codepunkten sicher in JSON.stringify() umgewandelt und mit JSON.parse() in den ursprünglichen String wiederhergestellt werden。
Trennzeichen
In Stringtexten sind jetzt Zeilen- und Absatztrennzeichen erlaubt (\u2028
und \u2029
)。
Vor 2019 wurden diese als Zeilenenden betrachtet und führten zu Fehlerbedingungen:
Beispiel
// Dies ist in ES2019 gültig: let text = "\u2028";
Beachten Sie
Jetzt haben JavaScript und JSON die gleichen Regeln.
Vor ES2019:
text = JSON.parse('"\u2028"') wird zu '' parseiert。
text = '"\u2028"' ergibtGrammatikfehler.
Neu überarbeitete Function toString()
ES2019 ÜberarbeitungFunction toString() Methode.
Die toString()-Methode gibt einen String zurück, der den Quellcode der Funktion darstellt.
Ab 2019 muss toString() die Quellcode des Funktionskörpers einschließlich Kommentare, Leerzeichen und Syntaxdetails zurückgeben.
Bis 2019 hatten verschiedene Browser unterschiedliche Funktionsspezifikationen zurückgegeben (z.B. ohne Kommentare und Leerzeichen). Ab 2019 sollte die Funktion vollständig in der geschriebenen Weise zurückgegeben werden.
Beispiel
function myFunction(p1, p2) { return p1 * p2; }