ECMAScript 2019

JavaScript-versioiden numero

Vanhat JS-versiot nimetään numeroilla: ES5 (2009) ja ES6 (2015).

Vuodesta 2016 lähtien versiot nimetään vuosina: ECMAScript 2016, 2017, 2018, 2019, ...

ES2019:n uudet ominaisuudet:

Varoitus

Nämä ominaisuudet ovat suhteellisen uusia.

Vanhemmat selaimet saattavat vaatia korvaavaa koodia (Polyfill)

JavaScript-merkkijonomenetelmä trimStart()

ES2019 lisäsi String-metodin JavaScriptiin trimStart()

trimStart() Metodin toimintatapa on samanlainen kuin trim() Samoin, mutta poistetaan vain välilyönnit merkkijonon alusta.

Esimerkki

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

Kokeile itse

Vuodesta 2020 lähtien kaikki nykyaikaiset selaimet tukevat JavaScript String trimStart():

Chrome Edge Firefox Safari Opera
Chrome 66 Edge 79 Firefox 61 Safari 12 Opera 50
huhtikuussa 2018 tammikuussa 2020 kesäkuussa 2018 syyskuussa 2018 toukokuussa 2018

JavaScript-merkkijonomenetelmä trimEnd()

ES2019 lisäsi JavaScriptille trimEnd() merkkijonometodeilla.

trimEnd() Metodin toimintatapa on samanlainen kuin trim() Samoin, mutta poistetaan vain välilyönnit merkkijonon lopusta.

Esimerkki

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

Kokeile itse

tammikuusta 2020 lähtien kaikki nykyaikaiset selaimet tukevat JavaScript String trimEnd():

Chrome Edge Firefox Safari Opera
Chrome 66 Edge 79 Firefox 61 Safari 12 Opera 50
huhtikuussa 2018 tammikuussa 2020 kesäkuussa 2018 syyskuussa 2018 toukokuussa 2018

JavaScript-objektimenetelmä fromEntries()

ES2019 lisäsi JavaScriptille fromEntries() Objektimetodi.

fromEntries() Metodi luo objektin iteratiivisista avain-arvo-pareista.

Esimerkki

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

Kokeile itse

tammikuusta 2020 lähtien kaikki nykyaikaiset selaimet tukevat JavaScript Object fromEntries():

Chrome Edge Firefox Safari Opera
Chrome 73 Edge 79 Firefox 63 Safari 12.1 Opera 60
maaliskuussa 2019 tammikuussa 2020 lokakuussa 2018 maaliskuussa 2019 huhtikuussa 2019

Valinnainen catch-sidonta

ES2019 lähtien, jos ei ole tarvetta, voidaan jättää catch-parametri pois:

Esimerkki

2019 ennen:

try {
// code
}
// code
}

2019 jälkeen:

try {
// code
}
// code
}

tammikuusta 2020 lähtien kaikki nykyaikaiset selaimet tukevat valinnaisen catch-sidoksen:

Chrome Edge Firefox Safari Opera
Chrome 66 Edge 79 Firefox 58 Safari 11.1 Opera 53
huhtikuussa 2018 tammikuussa 2020 tammikuussa 2018 maaliskuussa 2018 toukokuussa 2018

JavaScript-taulukonmenetelmä flat()

ES2019 lisäsi JavaScriptille flat() Taulukkometodi.

flat() Metodi luo uuden taulukon tasoittamalla sisäkkäisiä taulukoita.

Esimerkki

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

Kokeile itse

tammikuusta 2020 lähtien kaikki nykyaikaiset selaimet tukevat JavaScript Array flat():

Chrome Edge Firefox Safari Opera
Chrome 69 Edge 79 Firefox 62 Safari 12 Opera 56
syyskuussa 2018 tammikuussa 2020 syyskuussa 2018 syyskuussa 2018 syyskuussa 2018

JavaScript-taulukonmenetelmä flatMap()

ES2019 lisäsi JavaScriptille flatMap() Taulukkometodi.

flatMap() Metodi ensin karttaa taulukon kaikki elementit, sitten luo uuden taulukon tasoittamalla taulukon.

Esimerkki

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

Kokeile itse

Vakioitunut taulukonmenetelmä sort()

ES2019 MuokkausArray sort() -menetelmä.

ES2019 ennen säännöstö salli epävakaat järjestämisalgoritmit, kuten QuickSort.

ES2019 jälkeen selaimet täytyy käyttää vakaita järjestämisalgoritmeja:

Kun järjestetään arvoa mukaan, nämä elementit täytyy säilyttää suhteellinen sijaintinsa muiden samanarvoisten elementtien kanssa.

Esimerkki

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

Kokeile itse

Yllä olevassa esimerkissä, kun järjestetään hintaa mukaan, tulosten ei saa olla muiden nimitysten suhteellisessa sijainnissa, kuten seuraavasti:

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

Uudelleenmuokatun JSON.stringify()

ES2019 MuokkausJSON:n stringify() -menetelmä.

ES2019 ennen JSON ei pystynyt merkkijonoitumaan \-koodatulla merkillä.

Esimerkki

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

Kokeile itse

ES2019 ennen UTF-8-koodein (U+D800 asti U+DFFF) käyttäminen JSON.stringify() -metodilla palauttaa vahingoituneita Unicode-merkkejä, kuten ���.

Tämän muutoksen jälkeen UTF-8-koodein (U+D800 asti U+DFFF) omaavat merkkijonot voidaan turvallisesti muuntaa JSON.stringify() -metodilla ja palauttaa alkuperäiseen merkkijonoon JSON.parse() -metodilla.

Eroitusmerkki

Merkkijonoteksteissä sallitaan nyt riveittämis- ja kappaleittomerkit (\u2028 ja \u2029)。

ES2019 ennen nämä katsottiin rivinvaihtomerkkeinä ja aiheuttivat virheellisiä poikkeuksia:

Esimerkki

// Tämä on voimassa ES2019:ssä:
let text = "\u2028";

Kokeile itse

Huomaa

Nyt JavaScript ja JSON käyttävät samoja sääntöjä.

ES2019 ennen:

text = JSON.parse('"\u2028"')解析iksi ''.

text = '"\u2028"' antaaSyntaksivirhe

Uudelleenmuokatun Function toString()

ES2019 MuokkausFunction toString() -menetelmästä.

toString()-menetelmä palauttaa merkkijonon, joka edustaa funktion lähdekoodia.

Vuodesta 2019 lähtien toString()-menetelmän on palautettava funktion lähdekoodi, mukaan lukien huomautukset, välilyönnit ja kielioppityydet.

Ennen vuotta 2019 eri selaimet palauttivat erilaisia funktiivisia versioita (esim. ilman huomautuksia ja välilyöntejä). Vuodesta 2019 lähtien funktio tulisi palauttaa täysin kirjoittamalla tavalla.

Esimerkki

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

Kokeile itse