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:
- String.trimStart()
- String.trimEnd()
- Object.fromEntries
- Valfri catch-binding
- Array.flat()
- Array.flatMap()
- Reviderad Array.Sort()
- Omformad JSON.stringify()
- Tillåtna separatorkaraktärer i strängtexter
- Reviderad Function.toString()
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();
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();
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);
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();
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);
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 } ];
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");
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";
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; }