I den här handledningen lär du dig skillnaden mellan let och var i JavaScript med hjälp av exempel.
I JavaScript används både nyckelorden var
och let
deklarerar variabler.
Den let
nyckelordet introducerades i senare version av JavaScript kallas ES6 (ES2015) . Och det är det föredragna sättet att deklarera variabler.
JavaScript låter Vs var
Här är översikten över skillnaderna mellan let
och var
.
låta | var |
---|---|
låt är blockomfattat. | var är funktionsomfattande. |
let tillåter inte att omdeklarera variabler. | var gör det möjligt att deklarera variabler på nytt. |
Hissning förekommer inte i låt. | Hissning sker i var. |
JavaScript låter Vs var i Local Scope
var är funktionsomfattande
Variabeln som deklareras i en funktion med var
kan användas var som helst inom en funktion. Till exempel,
// 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
I ovanstående program deklareras variabeln a med var
. Variabeln a kan användas var som helst i funktionen greet
.
låt är blockomfattat
Variabeln deklarerad med let
kan endast nås i ett kodblock. Till exempel,
// 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();
Produktion
hej värld Uncaught ReferenceError: b definieras inte
I ovanstående program deklareras variabeln a inuti funktionen och den kan nås var som helst inuti funktionen (a blir funktionsomfång).
Variabeln b deklareras dock inuti if
blockuttrycket. b kommer att blockeras och kan endast nås inuti if
blocket.
Därför när du försöker komma åt b utanför if
blocket, uppstår ett fel (som visas ovan i programmet).
Obs! Variablerna som deklarerats inuti en funktion kommer att funktionsomfattas för både var
och let
.
let tillåter inte att deklarera om variabler
1. En variabel som deklareras med var
kan omdeklareras igen. Till exempel,
var a = 5; // 5 var a = 3; // 3
En variabel som deklareras med let
kan inte omdeklareras inom samma block eller samma omfång. Till exempel,
let a = 5; let a = 3; // error
Produktion
Uncaught SyntaxError: Identifier 'a' har redan förklarats
2. Omdeklarerar en variabel med var
i ett annat omfång eller block ändras också värdet på den yttre variabeln. Till exempel,
var a = 5; console.log(a); // 5 ( var a = 3; console.log(a); // 3 ) console.log(a); // 3
Omdeklarerar en variabel med let
i ett annat omfång eller block behandlar variabeln som en annan variabel. Och värdet på en variabel utanför ändras inte. Till exempel,
let a = 5; console.log(a); // 5 ( let a = 3; console.log(a); // 3 ) console.log(a); // 5
3. När en variabel som deklareras med var
används i en slinga ändras värdet på variabeln. Till exempel,
var a = 2; for(var a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 3
I ovanstående program for
förklarar slingan variabeln a. Därför a
ändras värdet på till 3 i slutet.
När en variabel som deklarerats med let används i en slinga ändras inte variabelns värde. Till exempel,
let a = 2; for(let a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 2
I ovanstående program for
behandlar loop variabel a som en annan variabel än den som anges ovan. Och omfattningen av den variabeln är bara inuti for
slingan. Därför förblir värdet på variabel a 2 i slutet.
låt tillåter inte lyftning
Variablerna som deklarerats med var
lyfts till toppen av programmets omfång. Till exempel,
console.log(a); var a; // undefined (not an error)
Nyckelordet let
tillåter inte lyftning. Till exempel,
console.log(a); let a; // Uncaught ReferenceError: a is not defined
Om du vill lära dig mer om lyftning, besök JavaScript-lyftning.
let och var Browser Support
De flesta moderna webbläsare stöder användningen av let
. Vissa webbläsare stöder dock inte helt let
.
För att lära dig mer, besök JavaScript.
Obs : Vid global räckvidd, både var
och let
kommer att bete sig på samma sätt. Till exempel,
var a = 5; // 5
Variabeln a är global omfattning och kan nås var som helst i programmet.
let a = 5; // 5
Variabeln a är global omfattning och kan nås var som helst i programmet.