ECMAScript 2019

JavaScript-versionnummer

Gamla JS-versioner är namngivna efter nummer: ES5 (2009) och ES6 (2015).

Från och med 2016 har versionerna namngivits efter år: ECMAScript 2016, 2017, 2018, 2019,...

Nya egenskaper i ES2019:

Varning

Dessa egenskaper är relativt nya.

Äldre webbläsare kan behöva ersättningskod (Polyfill)

JavaScript-strängmetod trimStart()

ES2019 har lagt till String-metoder för JavaScript trimStart().

trimStart() Arbetssättet för metoden är lika som trim() Liknande, men bara tar bort tomma tecken från början av strängen.

Exempel

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

Prova själv

Sedan januari 2020 har alla moderna webbläsare stödt JavaScript String trimStart():

Chrome Edge Firefox Safari Opera
Chrome 66 Edge 79 Firefox 61 Safari 12 Opera 50
april 2018 januari 2020 juni 2018 september 2018 maj 2018

JavaScript-strängmetod trimEnd()

ES2019 lade till trimEnd() strängmetoder.

trimEnd() Arbetssättet för metoden är lika som trim() Liknande, men bara tar bort tomma tecken från slutet av strängen.

Exempel

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

Prova själv

Sedan januari 2020 stöder alla moderna webbläsare JavaScript String trimEnd():

Chrome Edge Firefox Safari Opera
Chrome 66 Edge 79 Firefox 61 Safari 12 Opera 50
april 2018 januari 2020 juni 2018 september 2018 maj 2018

JavaScript-objektmetod fromEntries()

ES2019 lade till fromEntries() Objektmetoder.

fromEntries() Metoden skapar ett objekt från iterabla nyckel/värdepåpar.

Exempel

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

Prova själv

Sedan januari 2020 stöder alla moderna webbläsare JavaScript Object fromEntries():

Chrome Edge Firefox Safari Opera
Chrome 73 Edge 79 Firefox 63 Safari 12.1 Opera 60
mars 2019 januari 2020 oktober 2018 mars 2019 april 2019

Valfri catch-binding

Från och med ES2019 kan catch-argument utelämnas om de inte behövs:

Exempel

Innan 2019:

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

Efter 2019:

try {
// kod
catch {
// kod
}

Sedan januari 2020 stöder alla moderna webbläsare valfria catch-bindingar:

Chrome Edge Firefox Safari Opera
Chrome 66 Edge 79 Firefox 58 Safari 11.1 Opera 53
april 2018 januari 2020 januari 2018 mars 2018 maj 2018

JavaScript-arraymetod flat()

ES2019 lade till flat() Arraymetoder.

flat() Metoden skapar en ny array genom att utöka inbäddade arrayer.

Exempel

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

Prova själv

Sedan januari 2020 stöder alla moderna webbläsare JavaScript Array flat():

Chrome Edge Firefox Safari Opera
Chrome 69 Edge 79 Firefox 62 Safari 12 Opera 56
september 2018 januari 2020 september 2018 september 2018 september 2018

JavaScript-arraymetod flatMap()

ES2019 lade till flatMap() Arraymetoder.

flatMap() Metoden mapper alla element i arrayen och skapar sedan en ny array genom att utöka arrayen.

Exempel

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

Prova själv

Stabil arraymetod sort()

ES2019 Revideringmetoden Array.sort().

Innan 2019 tillät specifikationen os stabila sorteringsalgoritmer, till exempel QuickSort.

Efter ES2019 måste webbläsare använda stabila sorteringsalgoritmer:

När element sorteras efter ett värde måste dessa element behålla sin relativa position till andra element med samma värde.

Exempel

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

Prova själv

I det ovanstående exemplet tillåts inte resultat att visas i andra relativa positioner när de sorteras efter pris, såsom följande:

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

Omformad JSON.stringify()

ES2019 Revideringmetoden JSON.stringify().

Innan 2019 kunde JSON inte serialisera tecken med \-kodning.

Exempel

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

Prova själv

Innan ES2019 returnerade JSON.stringify() skadade Unicode-tecken, till exempel ���, när det användes på UTF-8 kodpunkter (U+D800 till U+DFFF).

Efter denna revision kan strängar med UTF-8 kodpunkter användas säkert med JSON.stringify() och återställas till ursprunglig sträng med JSON.parse().

Sekvensseparator

Strängtexter tillåter nu användning av rad- och avsnittsdelare (\u2028 och \u2029)。

Innan 2019 betraktades dessa som radavslutnings(tecken) och orsakade fel och undantag:

Exempel

// Detta är giltigt i ES2019:
let text = "\u2028";

Prova själv

Observera

Nu har JavaScript och JSON samma regler.

Innan ES2019:

text = JSON.parse('"\u2028"') kommer att解析为 ''。

text = '"\u2028"' gerGrammatisk fel.

Omformad Function toString()

ES2019 RevideringFunction toString() metoden.

toString()-metoden returnerar en sträng som representerar funktionens källkod.

Från och med 2019 måste toString() returnera funktionens källkod inklusive kommentarer, blanksteg och grammatiska detaljer.

Före 2019 returnerade olika webbläsare olika funktionssvarv (t.ex. utan kommentarer och blanksteg). Från och med 2019 bör funktionen returneras helt enligt skrivningsmetoden.

Exempel

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

Prova själv