ECMAScript 2019
Versione del JavaScript
Le vecchie versioni di JS vengono denominate con numeri: ES5 (2009) e ES6 (2015).
Dalla versione del 2016, le versioni vengono denominate per anno: ECMAScript 2016, 2017, 2018, 2019, ...
Nuove caratteristiche di ES2019:
- String.trimStart()
- String.trimEnd()
- Object.fromEntries
- Binding catch opzionale
- Array.flat()
- Array.flatMap()
- Revisito di Array.Sort()
- Rivisitazione JSON.stringify()
- Simboli di delimitazione permessi nei testi di stringa
- Revisito di Function.toString()
Attenzione
Queste caratteristiche sono relativamente nuove.
I browser più vecchi potrebbero necessitare di codice di sostituzione (Polyfill)
Metodo Stringa JavaScript trimStart()
ES2019 ha aggiunto il metodo String a JavaScript trimStart()
。
trimStart()
Il funzionamento del metodo è simile a trim()
Similmente, ma rimuove solo gli spazi dall'inizio della stringa.
Esempio
let text1 = " Hello World! "; let text2 = text1.trimStart();
Da gennaio 2020, tutti i browser moderni supportano JavaScript String trimStart():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
Aprile 2018 | Gennaio 2020 | Giugno 2018 | Settembre 2018 | Maggio 2018 |
Metodo Stringa JavaScript trimEnd()
ES2019 ha aggiunto a JavaScript trimEnd()
metodi di stringa.
trimEnd()
Il funzionamento del metodo è simile a trim()
Similmente, ma rimuove solo gli spazi alla fine della stringa.
Esempio
let text1 = " Hello World! "; let text2 = text1.trimEnd();
Da gennaio 2020, tutti i browser moderni supportano JavaScript String trimEnd():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
Aprile 2018 | Gennaio 2020 | Giugno 2018 | Settembre 2018 | Maggio 2018 |
Metodo Oggetto JavaScript fromEntries()
ES2019 ha aggiunto a JavaScript fromEntries()
Metodo dell'oggetto.
fromEntries()
Il metodo crea un oggetto da coppie chiave/valore iterabili.
Esempio
const fruits = [ ["apples", 300], ["pears", 900], ["bananas", 500] ]; const myObj = Object.fromEntries(fruits);
Da gennaio 2020, tutti i browser moderni supportano JavaScript Object fromEntries():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 73 | Edge 79 | Firefox 63 | Safari 12.1 | Opera 60 |
Marzo 2019 | Gennaio 2020 | Ottobre 2018 | Marzo 2019 | Aprile 2019 |
Binding catch opzionale
Dalla versione ES2019 in poi, se non necessario, è possibile saltare il parametro catch:
Esempio
Prima del 2019:
try { // code } catch (err) { // code }
Dopo il 2019:
try { // code } catch { // code }
Da gennaio 2020, tutti i browser moderni supportano l'opzionale binding catch:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 58 | Safari 11.1 | Opera 53 |
Aprile 2018 | Gennaio 2020 | Gennaio 2018 | Marzo 2018 | Maggio 2018 |
Metodo Array JavaScript flat()
ES2019 ha aggiunto a JavaScript flat()
Metodo dell'array.
flat()
Il metodo crea un nuovo array attraverso la piattaforma di array anidati.
Esempio
const myArr = [[1,2],[3,4],[5,6]]; const newArr = myArr.flat();
Da gennaio 2020, tutti i browser moderni supportano JavaScript Array flat():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 69 | Edge 79 | Firefox 62 | Safari 12 | Opera 56 |
Settembre 2018 | Gennaio 2020 | Settembre 2018 | Settembre 2018 | Settembre 2018 |
Metodo Array JavaScript flatMap()
ES2019 ha aggiunto a JavaScript flatMap()
Metodo dell'array.
flatMap()
Il metodo prima mappa tutti gli elementi dell'array, quindi crea un nuovo array tramite la piattaforma.
Esempio
const myArr = [1, 2, 3, 4, 5, 6]; const newArr = myArr.flatMap((x) => x * 2);
Metodo Array Stabile sort()
ES2019 Revisionedel metodo Array.sort().
Prima del 2019, lo standard permetteva algoritmi di ordinamento non stabili, come QuickSort.
Dopo ES2019, i browser devono utilizzare algoritmi di ordinamento stabili:
Quando si ordinano gli elementi in base a un valore, questi devono mantenere la loro posizione relativa rispetto agli altri elementi con lo stesso valore.
Esempio
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 } ];
Nell'esempio sopra, quando si ordina per prezzo, i risultati non sono autorizzati a comparire in posizioni relative diverse, come indicato di seguito:
X01 100 X03 100 X00 100 X03 100 X05 110 X04 110 X06 110 X07 110
Rivisitazione JSON.stringify()
ES2019 Revisionedel metodo JSON.stringify().
Prima del 2019, JSON non poteva serializzare caratteri codificati con \.
Esempio
let text = JSON.stringify("\u26D4");
Prima di ES2019, l'uso di JSON.stringify() sui punti di codice UTF-8 (U+D800 a U+DFFF) restituisce caratteri Unicode danneggiati, ad esempio ���.
Dopo questa revisione, le stringhe con punti di codice UTF-8 possono essere convertite in modo sicuro con JSON.stringify() e ripristinate come stringhe originali con JSON.parse().
Simbolo di separazione
Ora è permesso utilizzare separatori di riga e separatori di paragrafo nelle stringhe letterali (\u2028
e \u2029
)
Prima del 2019, questi erano considerati terminatori di riga e causavano eccezioni di errore:
Esempio
// Questo è valido in ES2019: let text = "\u2028";
Attenzione
Ora, JavaScript e JSON condividono le stesse regole.
Prima di ES2019:
text = JSON.parse('"\u2028"') verrà interpretato come ''.
text = '"\u2028"' forniràErrore di sintassi。
Rivisitazione Function toString()
ES2019 RevisioneMetodo Function toString().
Il metodo toString() restituisce una stringa che rappresenta il codice sorgente della funzione.
Dalla versione 2019 in poi, toString() deve restituire il codice sorgente della funzione, inclusi i commenti, gli spazi e i dettagli di sintassi.
Fino al 2019, diversi browser restituivano varianti di funzione diverse (ad esempio, senza commenti e spazi). Dalla versione 2019 in poi, la funzione dovrebbe essere restituita esattamente come scritta.
Esempio
function myFunction(p1, p2) { return p1 * p2; }