In questo tutorial, imparerai la differenza tra let e var in JavaScript con l'aiuto di esempi.
In JavaScript, sia le parole chiave var
che let
vengono utilizzate per dichiarare le variabili.
La let
parola chiave è stata introdotta nella versione successiva di JavaScript nota come ES6 (ES2015) . Ed è il modo preferito per dichiarare le variabili.
JavaScript lascia che Vs var
Ecco la panoramica delle differenze tra let
e var
.
permettere | var |
---|---|
let ha un ambito di blocco. | var ha un ambito di funzione. |
let non consente di ridichiarare le variabili. | var permette di ridichiarare le variabili. |
Il sollevamento non avviene in let. | Il sollevamento avviene in var. |
JavaScript lascia Vs var in Local Scope
var ha un ambito di funzione
La variabile dichiarata all'interno di una funzione con var
può essere utilizzata ovunque all'interno di una funzione. Per esempio,
// program to print text // variable a cannot be used here function greet() ( // variable a can be used here var a = 'hello'; console.log(a); ) // variable a cannot be used here greet(); // hello
Nel programma precedente, la variabile a è dichiarata con var
. La variabile a può essere utilizzata ovunque all'interno della funzione greet
.
let ha un ambito di blocco
La variabile dichiarata con let
è accessibile solo all'interno di un blocco di codice. Per esempio,
// program to print the text // variable a cannot be used here function greet() ( let a = 'hello'; // variable b cannot be used here if(a == 'hello')( // variable b can be used here let b = 'world'; console.log(a + ' ' + b); ) // variable b cannot be used here console.log(a + ' ' + b); // error ) // variable a cannot be used here greet();
Produzione
hello world Uncaught ReferenceError: b non è definito
Nel programma precedente, la variabile a è dichiarata all'interno della funzione ed è possibile accedervi ovunque all'interno della funzione (a diventa con scope funzione).
Tuttavia la variabile b è dichiarata all'interno if
dell'istruzione block. b avrà un ambito di blocco e sarà possibile accedervi solo all'interno del if
blocco.
Pertanto, quando si tenta di accedere a b fuori dal if
blocco, si verifica un errore (come mostrato sopra nel programma).
Nota : Le variabili dichiarate all'interno di una funzione sarà funzione di scope per entrambi var
e let
.
let non consente di ridichiarare le variabili
1. Una variabile dichiarata con var
può essere nuovamente dichiarata. Per esempio,
var a = 5; // 5 var a = 3; // 3
Una variabile dichiarata con let
non può essere dichiarata nuovamente all'interno dello stesso blocco o dello stesso ambito. Per esempio,
let a = 5; let a = 3; // error
Produzione
Uncaught SyntaxError: l'identificatore "a" è già stato dichiarato
2. La ridichiarazione di una variabile con var
un ambito o un blocco diverso cambia anche il valore della variabile esterna. Per esempio,
var a = 5; console.log(a); // 5 ( var a = 3; console.log(a); // 3 ) console.log(a); // 3
La ridichiarazione di una variabile con let
un ambito o un blocco diverso considera tale variabile come una variabile diversa. E il valore di una variabile esterna non cambia. Per esempio,
let a = 5; console.log(a); // 5 ( let a = 3; console.log(a); // 3 ) console.log(a); // 5
3. Quando una variabile dichiarata con var
viene utilizzata in un ciclo, il valore di quella variabile cambia. Per esempio,
var a = 2; for(var a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 3
Nel programma precedente, il for
ciclo dichiara nuovamente la variabile a. Quindi il valore di a
viene modificato in 3 alla fine.
Quando una variabile dichiarata con let viene utilizzata in un ciclo, il valore di una variabile non cambia. Per esempio,
let a = 2; for(let a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 2
Nel programma precedente, for
loop tratta la variabile a come una variabile diversa da quella dichiarata sopra. E l'ambito di quella variabile è solo all'interno del for
ciclo. Quindi il valore della variabile a rimane 2 alla fine.
let Non consente il sollevamento
Le variabili dichiarate con var
vengono poste in cima all'ambito del programma. Per esempio,
console.log(a); var a; // undefined (not an error)
La parola chiave let
non consente il sollevamento. Per esempio,
console.log(a); let a; // Uncaught ReferenceError: a is not defined
Se vuoi saperne di più sul sollevamento, visita JavaScript Hoisting.
let e var Browser Support
La maggior parte dei browser moderni supporta l'uso di let
. Tuttavia, alcuni browser non supportano completamente let
.
Per saperne di più, visita JavaScript consentire il supporto del browser.
Nota : in caso di ambito globale, sia var
e let
si comporteranno allo stesso modo. Per esempio,
var a = 5; // 5
La variabile a avrà un ambito globale ed è possibile accedervi ovunque nel programma.
let a = 5; // 5
La variabile a avrà un ambito globale ed è possibile accedervi ovunque nel programma.