In deze tutorial leer je aan de hand van voorbeelden wat het verschil is tussen let en var in JavaScript.
In JavaScript worden zowel de trefwoorden var
als let
gebruikt om variabelen te declareren.
Het let
sleutelwoord is geïntroduceerd in de latere versie van JavaScript, bekend als ES6 (ES2015) . En het is de beste manier om variabelen te declareren.
JavaScript laat Vs var
Hier is het overzicht van de verschillen tussen let
en var
.
laat | var |
---|---|
let is block-scoped. | var is functiebereik. |
let staat niet toe om variabelen opnieuw te declareren. | var maakt het mogelijk om variabelen opnieuw te declareren. |
Hijsen gebeurt niet in de verhuur. | Hijsen vindt plaats in var. |
JavaScript laat Vs var in Local Scope
var is functiebereik
De variabele die binnen een functie wordt gedeclareerd, var
kan overal binnen een functie worden gebruikt. Bijvoorbeeld,
// 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
In het bovenstaande programma wordt de variabele a gedeclareerd met var
. De variabele a kan overal in de functie worden gebruikt greet
.
let is block-scoped
De variabele die is gedeclareerd met let
is alleen toegankelijk binnen een codeblok. Bijvoorbeeld,
// 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();
Uitvoer
hallo wereld Uncaught ReferenceError: b is niet gedefinieerd
In het bovenstaande programma wordt de variabele a binnen de functie gedeclareerd en is deze overal binnen de functie toegankelijk (a wordt functiebereik).
De variabele b wordt echter gedeclareerd in de if
blokinstructie. b heeft een block-scoped en is alleen toegankelijk binnen het if
blok.
Daarom if
treedt er een fout op wanneer u probeert toegang te krijgen tot b buiten het blok (zoals hierboven in het programma wordt getoond).
Opmerking : de variabelen die binnen een functie zijn gedeclareerd, hebben een functiebereik voor zowel var
en let
.
laat het niet toestaan om variabelen opnieuw te declareren
1. Een variabele die is gedeclareerd met, var
kan opnieuw worden gedeclareerd . Bijvoorbeeld,
var a = 5; // 5 var a = 3; // 3
Een variabele gedeclareerd met let
kan niet opnieuw worden gedeclareerd binnen hetzelfde blok of hetzelfde bereik. Bijvoorbeeld,
let a = 5; let a = 3; // error
Uitvoer
Uncaught SyntaxError: Identifier 'a' is al gedeclareerd
2. Het opnieuw declareren van een variabele met var
een ander bereik of blok verandert ook de waarde van de buitenste variabele. Bijvoorbeeld,
var a = 5; console.log(a); // 5 ( var a = 3; console.log(a); // 3 ) console.log(a); // 3
Het opnieuw declareren van een variabele met let
een ander bereik of blok behandelt die variabele als een andere variabele. En de waarde van een variabele buiten verandert niet. Bijvoorbeeld,
let a = 5; console.log(a); // 5 ( let a = 3; console.log(a); // 3 ) console.log(a); // 5
3. Als een variabele die var
is gedeclareerd met wordt gebruikt in een lus, verandert de waarde van die variabele. Bijvoorbeeld,
var a = 2; for(var a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 3
In het bovenstaande programma verklaart de for
lus de variabele a opnieuw. Daarom wordt de waarde van aan het einde a
gewijzigd in 3 .
Als een variabele gedeclareerd met let wordt gebruikt in een lus, verandert de waarde van een variabele niet. Bijvoorbeeld,
let a = 2; for(let a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 2
In het bovenstaande programma for
behandelt lus variabele a als een andere variabele dan degene die hierboven is gedeclareerd. En het bereik van die variabele is alleen binnen de for
lus. Vandaar de waarde van variabele a steeds 2 aan het einde.
laat hijsen niet toestaan
De variabelen gedeclareerd met var
worden naar de top van de scope van het programma gehesen. Bijvoorbeeld,
console.log(a); var a; // undefined (not an error)
Het sleutelwoord let
staat hijsen niet toe. Bijvoorbeeld,
console.log(a); let a; // Uncaught ReferenceError: a is not defined
Als je meer wilt weten over hijsen, ga dan naar JavaScript Hoisting.
let en var Browserondersteuning
De meeste moderne browsers ondersteunen het gebruik van let
. Sommige browsers ondersteunen echter niet volledig let
.
Ga voor meer informatie naar JavaScript voor ondersteuning van de browser.
Opmerking : in het geval van een globaal bereik gedragen var
en beide let
zich op dezelfde manier. Bijvoorbeeld,
var a = 5; // 5
De variabele a heeft een globaal bereik en is overal in het programma toegankelijk.
let a = 5; // 5
De variabele a heeft een globaal bereik en is overal in het programma toegankelijk.