edubun
Italiano

Variabili: let e const

Una variabile è un nome per un valore. Dopo let score = 10, la parola score sta per 10 finché non le dai qualcos'altro.

Dare un nome a un valore per usarlo di nuovo

Finora ogni valore è stato scritto direttamente dentro console.log e poi dimenticato. I programmi veri devono ricordare le cose: il punteggio del giocatore, gli articoli in un carrello, il nome che qualcuno ha digitato. Una variabile è una scatola con un nome che contiene un valore. La crei una volta sola, poi usi il suo nome ovunque ti serva quel valore.

let score = 10;
console.log(score);        // 10
console.log(score + 5);    // 15

La riga let score = 10; fa due cose. La parola chiave let dichiara una nuova variabile chiamata score, e = 10 ci mette dentro il valore 10. Qui il segno di uguale non significa «è uguale a» come in matematica. Significa «memorizza il valore a destra nel nome a sinistra». I programmatori la chiamano assegnazione. Quando più avanti score compare senza virgolette, JavaScript va a cercare la scatola e usa il valore che contiene.

Cambiare un valore con let

A una variabile dichiarata con let si può dare un nuovo valore in seguito. Scrivi il nome, un segno di uguale e il nuovo valore, questa volta senza let, perché la variabile esiste già:

let score = 10;
score = 25;
console.log(score);        // 25
score = score + 5;
console.log(score);        // 30

La riga score = score + 5; sembra impossibile in matematica, ma se la leggi come un'istruzione ha senso. JavaScript valuta prima il lato destro, il punteggio attuale più 5, cioè 30. Poi rimette 30 dentro score. Il vecchio valore è sparito. Questo schema, leggere una variabile e salvarci dentro un valore aggiornato, è il modo in cui i programmi contano, sommano totali e tengono traccia di tutto ciò che cambia.

const per i valori che non cambiano

Anche la parola chiave const dichiara una variabile, ma deve ricevere subito un valore e non può mai essere riassegnata. Se ci provi, il programma si ferma con TypeError: Assignment to constant variable. Quell'errore è utile. Se un valore non deve cambiare, come il numero di giorni in una settimana o un'aliquota fiscale, dichiararlo con const fa sì che un errore in un altro punto del programma non possa sovrascriverlo di nascosto.

const daysInWeek = 7;
console.log(daysInWeek * 4);   // 28
// daysInWeek = 8;  si fermerebbe con un TypeError

Una buona abitudine, consigliata da molte guide di stile, è usare const per impostazione predefinita e passare a let solo quando sai che il valore cambierà. Nel codice che trovi sul web potresti vedere anche la parola chiave più vecchia var. Funziona ancora, ma segue regole più lasche che causano bug sorprendenti, perciò questo corso usa solo let e const.

Regole per i nomi

Il nome di una variabile può contenere lettere, cifre, il trattino basso _ e il simbolo del dollaro $, ma non può cominciare con una cifra né contenere spazi. Quindi total2 va bene e 2total no. I nomi distinguono maiuscole e minuscole: score e Score sono due variabili diverse. Alcune parole come let, const, if e for sono riservate dal linguaggio e non si possono usare come nomi. Quando un nome è formato da più parole, i programmatori JavaScript di solito lo scrivono in camelCase: la prima parola in minuscolo e ogni parola successiva con l'iniziale maiuscola, come in totalPrice o daysInWeek. Scegli nomi che dicono che cosa significa il valore; price dice a chi legge molto più di x.

Dichiarata ma vuota, e usata troppo presto

Se scrivi let answer; senza un valore, la variabile esiste ma contiene undefined finché non le assegni qualcosa. Usare una variabile let o const in una riga sopra la sua dichiarazione è un errore: ReferenceError: Cannot access 'answer' before initialization. Usare un nome che non è mai stato dichiarato dà ReferenceError: answer is not defined. In pratica i due messaggi dicono la stessa cosa: controlla l'ortografia e controlla che la dichiarazione venga prima.

let nome = valore; può cambiare in seguito. const nome = valore; non cambia mai.

variabileUn nome che contiene un valore
dichiarareCreare una variabile con let o const
assegnazioneMemorizzare un valore con =
letDichiara una variabile il cui valore può cambiare
constDichiara una variabile che non può essere riassegnata
camelCasetotalPrice: le parole successive iniziano con la maiuscola
undefinedCiò che contiene una variabile dichiarata prima di ricevere un valore
parola riservataUna parola come let o if che non può essere un nome
  1. Che cosa stampa?
    let x = 4;
    x = x + 3;
    console.log(x);
  2. Che cosa stampa?
    let n = 2;
    n = 10;
    n = n * 3;
    console.log(n);
  3. Che cosa stampa?
    let city = "Busan";
    console.log("city");
    • Busan
    • city
    • undefined
  4. Che cosa succede quando viene eseguito?
    const max = 5;
    max = 6;
    • max diventa 6
    • TypeError: Assignment to constant variable
    • Niente, max resta 5 senza avvisi
  5. Quale di questi è un nome di variabile valido?
    • 2ndPlace
    • second place
    • secondPlace
  6. Che cosa stampa?
    let total;
    console.log(typeof total);
  7. Che cosa stampa?
    let a = 5;
    let b = a;
    a = 9;
    console.log(b);
  8. score e Score sono la stessa variabile?
    • Sì
    • No
  9. Quale parola chiave dovresti usare per il numero di minuti in un'ora?
    • const
    • let
    • var
  10. Che cosa stampa?
    let word = "hi";
    word = word + word;
    console.log(word);
Punti chiave
  • let nome = valore; dichiara una variabile che può cambiare.
  • const nome = valore; ne dichiara una che non può essere riassegnata.
  • = significa memorizza, non uguale.
  • x = x + 1 legge x, aggiunge 1 e rimette dentro il risultato.
  • Nomi: lettere, cifre, _ e $, niente cifra iniziale, distinzione tra maiuscole e minuscole, camelCase.
Fonti di questo corso (2)
  • MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
  • Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)

Consultato il: 2026-10-17