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:

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();

Prøv det selv

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();

Prøv det selv

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);

Prøv det selv

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();

Prøv det selv

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);

Prøv det selv

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

Prøv det selv

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");

Prøv det selv

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";

Prøv det selv

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

Prøv det selv