In JavaScript le variabili possono essere dichiarate in tre differenti modi che, anche se molto simili, presentano differenze importanti riguardo al contesto di utilizzo. Vediamo queste modalità nel dettaglio.
var
Definendo una variabile con var, stiamo riservando un'area di memoria a cui tutto lo script potrà accedere.
for (var i = 0; i <= 3; i++) { console.log(i); } console.log(i); // 1 2 3 4
Anche se definita nel contesto del ciclo for, la variabile può essere richiamata nell'ultima riga e restituire il valore 4.
Un'altra caratteristica delle variabili è l'hoisting, cioè il sollevamento della dichiarazione delle variabili: prima dell'esecuzione, il codice viene scannerizzato e in memoria viene riservato lo spazio riservato alle variabili.
Per quanto riguarda le varibili dichiarate con var, queste vengono inizializzate con valore undefined, il che fa si che il seguente codice non dia errore.
console.log(helloWorld); // undefined helloWorld = "Ciao mondo"; var helloWorld; console.log(helloWorld); // Ciao mondo var helloWorld;
let
Con let definiamo delle variabili nel contesto o scope corrente.
for (let i = 0; i <= 3; i++) { console.log(i); } console.log(i); // Reference error
Se adattiamo l'esempio precedente, vediamo che al di fuori del for la variabile i non esiste, possiamo creare contesti anche utilizzando le semplici parentesi "{", permettendoci di utilizzare variabili con lo stesso nome ma mantenendo valori differenti.
{ let name="Morgan"; console.log(name)} // Morgan let name="Fabio" console.log(name) // Fabio }
A differenza di var non viene effettuato alcun hoisting, quindi ogni accesso alla variabile prima della sua dichiarazione restituirà un'errore, così come la ri-dichiarazione della variabile.
helloWorld = "Ciao mondo"; // ReferenceError let helloWorld; let helloWorld; // Identifier 'helloWorld' has already been declared
const
A differenza di come può sembrare dal nome, una variabile dichiarata come const è uguale a una varibile let, ma segue la seguente regola: non si può modificare una variabile dopo la prima dichiarazione, ma la si può aggiornare. In questo caso un esempio è quello che serve per capirne l'utilizzo.
const name = "Morgan"; name = "Fabio"; // TypeError const arr=[1,2]; console.log(arr) // [1,2] arr[0]=0; console.log(arr) // [0,2]
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Ottimizzare le performance usando Span<T> e il metodo Split
Gestione CSS in Blazor con .NET 9
Gestire codice JavaScript con code splitting e lazy loading
Rendere le variabili read-only in una pipeline di Azure DevOps
Migliorare l'organizzazione delle risorse con Azure Policy
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Selettore CSS :has() e i suoi casi d'uso avanzati
Utilizzare una qualunque lista per i parametri di tipo params in C#
Ridurre il reflow cambiando il CSS
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Introduzione ai web component HTML
Ottimizzare le pull con Artifact Cache di Azure Container Registry
I più letti di oggi
- Impersonation di utente per l'esecuzione di codice in una pagina ASP.NET
- Documentare i servizi REST con Swagger e OpenAPI con .NET 9
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Sfruttare i nuovi overload di TimeSpan.From* per creare timespan usando numeri interi