ECMAScript 2019
JavaScript version numre
Gamle JS-versioner blev navngivet efter numre: ES5 (2009) og ES6 (2015).
Fra 2016 har versioner været navngivet efter år: ECMAScript 2016, 2017, 2018, 2019, ...
Nye funktioner i ES2019:
- String.trimStart()
- String.trimEnd()
- Object.fromEntries
- Valgfri catch-bindning
- Array.flat()
- Array.flatMap()
- Genoprevised Array.Sort()
- Genoprevised JSON.stringify()
- Tilladte adskillelses tegn i strengtekster
- Genoprevised Function.toString()
Advarsel
Disse funktioner er relativt nye.
Ældre browsere kan muligvis kræve erstatnings kode (Polyfill)
JavaScript string-metode trimStart()
ES2019 har tilføjet String-metoden til JavaScript trimStart()
.
trimStart()
Arbejdsmåden for metoden er ligesom trim()
Lignende, men kun fjerner mellemrum fra begyndelsen af strengen.
Eksempel
text1 = " Hello World! "; text2 = text1.trimStart();
Siden januar 2020 har alle moderne browsere understøttet JavaScript String trimStart():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
i april 2018 | i januar 2020 | i juni 2018 | i september 2018 | i maj 2018 |
JavaScript string-metode trimEnd()
ES2019 tilføjede til JavaScript trimEnd()
strengmetoder.
trimEnd()
Arbejdsmåden for metoden er ligesom trim()
Lignende, men kun fjerner mellemrum fra slutningen af strengen.
Eksempel
text1 = " Hello World! "; text2 = text1.trimEnd();
Siden januar 2020 har alle moderne browsere understøttet JavaScript String trimEnd():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
i april 2018 | i januar 2020 | i juni 2018 | i september 2018 | i maj 2018 |
JavaScript objekt-metode fromEntries()
ES2019 tilføjede til JavaScript fromEntries()
Objektmetoder.
fromEntries()
Metoden opretter et objekt fra itererbare nøgle/værdipar.
Eksempel
const fruits = [ ["apples", 300], ["pears", 900], ["bananas", 500] ]; const myObj = Object.fromEntries(fruits);
Siden januar 2020 har alle moderne browsere understøttet JavaScript Object fromEntries():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 73 | Edge 79 | Firefox 63 | Safari 12.1 | Opera 60 |
i marts 2019 | i januar 2020 | i oktober 2018 | i marts 2019 | i april 2019 |
Valgfri catch-bindning
Fra ES2019 af kan catch-parametret undlades, hvis det ikke er nødvendigt:
Eksempel
Før 2019:
try { // kode catch (err) { // kode }
Efter 2019:
try { // kode catch { // kode }
Siden januar 2020 har alle moderne browsere understøttet valgfri catch-binding:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 58 | Safari 11.1 | Opera 53 |
i april 2018 | i januar 2020 | i januar 2018 | i marts 2018 | i maj 2018 |
JavaScript array-metode flat()
ES2019 tilføjede til JavaScript flat()
Listemetoder.
flat()
Metoden opretter en ny liste ved at flade ud indlejrede lister.
Eksempel
const myArr = [[1,2],[3,4],[5,6]]; const newArr = myArr.flat();
Siden januar 2020 har alle moderne browsere understøttet JavaScript Array flat():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 69 | Edge 79 | Firefox 62 | Safari 12 | Opera 56 |
i september 2018 | i januar 2020 | i september 2018 | i september 2018 | i september 2018 |
JavaScript array-metode flatMap()
ES2019 tilføjede til JavaScript flatMap()
Listemetoder.
flatMap()
Metoden mapper først alle elementerne i listen, og opretter derefter en ny liste ved at flade ud listen.
Eksempel
const myArr = [1, 2, 3, 4, 5, 6]; const newArr = myArr.flatMap((x) => x * 2);
Stabil array-metode sort()
ES2019 Revideretmetoden Array.sort().
Før 2019 tillod specifikationen ustabile sorteringsalgoritmer, såsom QuickSort.
Efter ES2019 skal browsere bruge stabile sorteringsalgoritmer:
Når elementer sorteres efter en værdi, skal disse elementer beholde deres relative positioner sammenlignet med andre elementer med samme værdi.
Eksempel
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 } ];
I ovenstående eksempel er det ikke tilladt, at resultaterne vises i andre relative positioner, når de sorteres efter pris, såsom følgende:
X01 100 X03 100 X00 100 X03 100 X05 110 X04 110 X06 110 X07 110
Genoprevised JSON.stringify()
ES2019 Revideretmetoden JSON.stringify().
Før 2019 kunne JSON ikke serialisere tegn med escape-koding.
Eksempel
let text = JSON.stringify("\u26D4");
Før ES2019 ville JSON.stringify() på UTF-8 kodepunkter (U+D800 til U+DFFF) returnere beskadigede Unicode tegn, f.eks. ���.
Efter denne revision kan strenge med UTF-8 kodepunkter (U+D800 til U+DFFF) sikkert konverteres med JSON.stringify() og gendannes til oprindelige strenge med JSON.parse().
Separator
Stringlæsning tillader nu brug af linjeskilere og afskilere (\u2028
og \u2029
)。
Før 2019 blev disse betragtet som linjeskilere og forårsagede fejl undtagelser:
Eksempel
// Dette er gyldigt i ES2019: let text = "\u2028";
Bemærk
Nu har JavaScript og JSON de samme regler.
Før ES2019:
text = JSON.parse('"\u2028"') vil fortolkes som ''。
text = '"\u2028"' vil giveSprogfejl.
Genoprevised Function toString()
ES2019 RevideretFunction toString() metoden.
toString() metoden returnerer en streng, der repræsenterer funktionens kildekode.
Fra 2019 skal toString() returnere funktionens kildekode, herunder kommentarer, mellemrum og syntaksdetaljer.
Før 2019 returnerede forskellige browsere forskellige funktionssvarvarianter (f.eks. uden kommentarer og mellemrum). Fra 2019 skal funktionen returneres fuldt ud i overensstemmelse med den måde den blev skrevet på.
Eksempel
function myFunction(p1, p2) { return p1 * p2; }