Scroll Top
Via Antonio Amato, 20/22 84131 Salerno (SA)

ECMAScript 2023 (ES14): analisi delle novità introdotte

ECMAScript

(articolo redatto da Gaetano De Pascale)

ECMAScript è uno standard per la creazione di linguaggi di scripting, e JavaScript è l’implementazione più nota di questo standard. È sviluppato dal comitato ECMA International e definisce le specifiche tecniche che un linguaggio di scripting deve seguire per essere considerato ECMAScript.

L’obiettivo principale di ECMAScript è di standardizzare e garantire l’interoperabilità tra diversi ambienti di esecuzione e tra diverse implementazioni. Ciò consente ai programmatori di scrivere codice JavaScript che funziona su più piattaforme, senza doverlo adattare per ciascuna di esse.

JavaScript è comunemente associato a ECMAScript, e la maggior parte dei browser web implementa le specifiche ECMAScript per eseguire il codice JavaScript. Periodicamente, ECMA International rilascia nuove versioni di ECMAScript con nuove funzionalità, miglioramenti e correzioni

ECMAScript 2023 (ES14)

A giugno 2023 è stata pubblicata la quattordicesima versione (ES14 – ECMAScript 2023) della specifica ufficiale. Questa versione introduce alcune nuove funzionalità, che vedremo in dettaglio in questo articolo:

  • Nuovi metodi per la ricerca e la modifica degli array
  • Uso dei simboli come chiavi per le collezioni deboli
  • Supporto standardizzato per la grammatica shebang/hashbang
  • Tipi di record e tuple

Nuovi metodi per la ricerca e la modifica degli array

Gli array sono una delle strutture dati più usate in JavaScript, e in ECMAScript 2023 vengono arricchiti con quattro nuovi metodi, che consentono di effettuare operazioni comuni in modo più semplice e intuitivo. Vediamoli uno per uno.

Array.prototype.toSorted

Il metodo toSorted ha la stessa firma di Array.prototype.sort, ma crea un nuovo array invece di modificare quello originale. Questo permette di mantenere immutabile l’array di partenza e di evitare effetti collaterali indesiderati. Il metodo restituisce un nuovo array ordinato secondo il criterio specificato come parametro, che può essere una funzione di confronto o il valore predefinito undefined, che ordina gli elementi in base alla loro rappresentazione Unicode. Ecco un esempio:

copia
ECMAScript

Array.prototype.toReversed

Il metodo toReversed ha la stessa firma di Array.prototype.reverse, ma crea un nuovo array invece di modificare quello originale. Questo permette di mantenere immutabile l’array di partenza e di evitare effetti collaterali indesiderati. Il metodo restituisce un nuovo array con gli elementi in ordine inverso rispetto all’array originale. Ecco un esempio:

copia
ECMAScript

Array.prototype.with

Il metodo with permette di creare un nuovo array con uno o più elementi aggiunti, rimossi o sostituiti, senza modificare l’array originale. Il metodo accetta come parametri l’indice di inizio, il numero di elementi da rimuovere e gli elementi da aggiungere. Il metodo restituisce un nuovo array con le modifiche applicate. Ecco un esempio:

copia
ECMAScript

Array.prototype.findLast e Array.prototype.findLastIndex

I metodi findLast e findLastIndex permettono di cercare un elemento in un array a partire dalla fine, invece che dall’inizio. Il metodo findLast restituisce il valore dell’elemento trovato, mentre il metodo findLastIndex restituisce l’indice dell’elemento trovato. Entrambi i metodi accettano come parametri una funzione di predicato, che determina la condizione di ricerca, e un valore opzionale che indica l’indice da cui iniziare la ricerca. Se l’elemento non viene trovato, i metodi restituiscono rispettivamente undefined e -1. Ecco un esempio:

copia
ECMAScript

WeakMap – WeakSet

Sono strutture dati che permettono di memorizzare coppie chiave-valore, in cui le chiavi sono oggetti e i valori sono arbitrari.

  • WeakMap è una collection simile a Map: ma a differenza di quest’ultima permette di utilizzare solamente oggetti come chiavi. Inoltre, la rimozione di un oggetto rimuove anche il valore associato.
  • WeakSet è una collection simile a Set, che memorizza solamente oggetti, e li rimuove completamente quando diventano inaccessibili.

Fino a ECMAScript 2022, le loro chiavi dovevano essere oggetti ordinari, e non era possibile usare i simboli, che rappresentano valori unici e immutabili e sono un tipo primitivo di JavaScript. In ECMAScript 2023, invece, è possibile usare i simboli come chiavi per le collezioni deboli, ampliando così le possibilità di utilizzo di queste strutture. Ecco un esempio:

copia
weak ECMAScript

Supporto per la grammatica hashbang

ECMAScript 2023 introduce la Hashbang Grammar, consentendo di utilizzare la notazione shebang (#!) nel codice sorgente.

Questa grammatica è una convenzione che permette di indicare al sistema operativo quale interprete usare per eseguire uno script. Si tratta di una linea che inizia con i caratteri #! seguiti dal percorso dell’interprete. Per esempio, la linea #!/usr/bin/env node indica di usare Node.js per eseguire lo script.

Record & tuple

I tipi di record e tuple sono due nuovi tipi di dati introdotti in ECMAScript 2023, che permettono di creare valori composti immutabili. I record sono simili agli oggetti, ma hanno le chiavi e i valori fissati e non modificabili. Le tuple sono simili agli array, ma hanno la lunghezza e gli elementi fissati e non modificabili. I record e le tuple sono valori primitivi, e non oggetti, e possono essere confrontati con l’operatore === in base al loro contenuto, e non alla loro identità. I record e le tuple si creano usando le parentesi graffe {} e quadre [] rispettivamente, precedute dal carattere #. Ecco un esempio:

copia

I record e le tuple sono utili per creare valori composti che non cambiano nel tempo, e che possono essere usati come chiavi per le mappe e i set. Inoltre, i record e le tuple possono essere usati con le funzionalità esistenti del linguaggio, come il destructuring, lo spread operator, il template literal. Ecco alcuni esempi:

copia
weak ECMAScript

Conclusioni

In conclusione, i record e tuple sono una novità interessante di ECMAScript 2023, che permettono di creare valori composti immutabili e facilmente confrontabili, ampliando così le possibilità di espressione del linguaggio. I record e le tuple sono compatibili con le funzionalità esistenti del linguaggio, e possono essere usati in vari contesti, come la programmazione funzionale, la gestione dello stato, e la modellazione dei dati.


Se anche tu vuoi occuparti di importanti progetti di sviluppo software
dai un’occhiata alle nostre opportunità di lavoro e conosciamoci subito!