Junior
In che modi è possibile dichiarare variabili in JavaScript? Nomina le differenze tra questi metodi.
sobes.tech AI
Risposta dell'AI
In JavaScript, le variabili possono essere dichiarate in tre modi: var, let, const.
Differenze tra loro:
| Differenza | var |
let |
const |
|---|---|---|---|
| Ambito | Funzionale | Blocca | Blocca |
| Riassegnazione | Possibile | Possibile | Impossibile |
| Riassegnazione | Possibile | Possibile | Impossibile |
| Hoisting | Solleva la dichiarazione e l'inizializzazione a undefined |
Solleva la dichiarazione, ma non l'inizializzazione | Solleva la dichiarazione, ma non l'inizializzazione |
Esempi:
// var
function esempioVar() {
var x = 10; // Ambito funzionale
if (true) {
var x = 20; // Riassegnazione possibile all'interno della stessa funzione
console.log(x); // 20
}
console.log(x); // 20 (la variabile x del if è accessibile qui)
}
console.log(x); // Errore: ReferenceError: x non è definito (x non visibile fuori dalla funzione)
// Hoisting con var
console.log(a); // undefined
var a = 5;
console.log(a); // 5
// let
function esempioLet() {
let y = 10; // Ambito di blocco
if (true) {
let y = 20; // Riassegnazione non possibile all'interno dello stesso blocco
console.log(y); // 20 (è un'altra variabile y)
}
console.log(y); // 10 (variabile y fuori dal blocco)
}
console.log(y); // Errore: ReferenceError: y non è definito
// Hoisting con let
// console.log(b); // Errore: ReferenceError: Impossibile accedere a 'b' prima dell'inizializzazione
let b = 5;
console.log(b); // 5
// const
function esempioConst() {
const z = 10; // Ambito di blocco
// z = 20; // Errore: TypeError: Assegnazione a variabile costante. (Impossibile riassegnare)
if (true) {
const z = 20; // Riassegnazione non possibile all'interno dello stesso blocco
console.log(z); // 20 (un'altra variabile z)
}
console.log(z); // 10 (variabile z fuori dal blocco)
}
console.log(z); // Errore: ReferenceError: z non è definito
// Hoisting con const
// console.log(c); // Errore: ReferenceError: Impossibile accedere a 'c' prima dell'inizializzazione
const c = 5;
console.log(c); // 5
// Per oggetti e array dichiarati con const, è possibile modificare il contenuto
const obj = { name: 'Test' };
obj.name = 'Nuovo Test'; // Permesso
// obj = { name: 'Altro Test' }; // Errore