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:
- String.trimStart()
- String.trimEnd()
- Object.fromEntries
- Valinnainen catch-sidonta
- Array.flat()
- Array.flatMap()
- Uudelleenlaadittu Array.Sort()
- Uudelleenmuokatun JSON.stringify()
- Sallitut erotimet merkkijonoteksteissä
- Uudelleenlaadittu Function.toString()
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();
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();
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);
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();
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);
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 } ];
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");
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";
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; }