Introduzione
Le variabili sono uno dei concetti fondamentali in JavaScript. Permettono di memorizzare e gestire dati dinamici, come numeri, stringhe, oggetti o risultati di operazioni. Ogni variabile ha un ambito (scope), che ne determina la visibilità e la durata nel codice.
In questo articolo vedremo come dichiarare variabili, quali parole chiave usare (var, let, const) e come funziona lo scope in JavaScript, con esempi chiari e consigli pratici.
Dichiarare variabili: var, let, const
Fino al 2015, in JavaScript si usava solo var. Con ES6 sono stati introdotti let e const, che offrono più controllo sullo scope e la mutabilità delle variabili.
Esempio:
var nome = "Mario"; // variabile classica let eta = 30; // variabile modificabile, con scope locale const PI = 3.14; // costante, non modificabile
var: ha function scope, è accessibile ovunque nella funzione
let e const: hanno block scope, visibili solo all’interno del blocco { … }
const: obbliga a non riassegnare la variabile
Scope: globale, di funzione, di blocco

Lo scope determina dove una variabile è accessibile.
Scope globale
let x = 10;
function stampa() {
console.log(x); // accede a x
}
Scope di funzione
function test() {
let y = 5;
console.log(y);
}
// console.log(y); // Errore: y non è definito fuori dalla funzione
Scope di blocco (solo con let e const)
if (true) {
let z = 20;
console.log(z); // ok
}
// console.log(z); // Errore
Hoisting

Con var, le dichiarazioni vengono “sollevate” in cima alla funzione:
console.log(a); // undefined var a = 5;
Con let e const, invece, l’uso prima della dichiarazione genera errore.
Buone pratiche
- Usa const per valori che non devono cambiare
- Usa let per variabili modificabili nel tempo
- Evita var nei progetti moderni
- Mantieni lo scope il più piccolo possibile
- Dai nomi descrittivi alle variabili
Esempio pratico
function calcolaPrezzo(sconto) {
const prezzoBase = 100;
let prezzoFinale = prezzoBase - (prezzoBase * sconto / 100);
return prezzoFinale;
}
console.log(calcolaPrezzo(10)); // 90
In questo esempio, prezzoBase è una costante, mentre prezzoFinale è calcolata dinamicamente.
