V tomto tutoriále sa pomocou príkladov dozviete o rozdieloch medzi let a var v JavaScripte.
V JavaScriptu, ako kľúčové slová var
a let
sú používané deklarovať premenné.
let
Kľúčových slov bol predstavený v novšej verzii JavaScriptu známe ako ES6 (ES2015) . A je to preferovaný spôsob deklarácie premenných.
JavaScript umožňuje Vs var
Tu je prehľad rozdielov medzi let
a var
.
nechajme | var |
---|---|
nech je blokovaný. | var je rozsah pôsobnosti. |
let neumožňuje znovu deklarovať premenné. | var umožňuje znovu deklarovať premenné. |
K zdvíhaniu nedochádza pri let. | K zdvíhaniu dochádza vo var. |
JavaScript umožňuje Vs var v lokálnom rozsahu
var je rozsah pôsobnosti
Premennú deklarovanú vo vnútri funkcie s var
je možné použiť kdekoľvek v rámci funkcie. Napríklad,
// 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
Vo vyššie uvedenom programe je premenná a deklarovaná pomocou var
. Premennú a je možné použiť kdekoľvek vo vnútri funkcie greet
.
nech je blokovaný
Premenná deklarovaná ako let
je prístupná iba v rámci bloku kódu. Napríklad,
// 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();
Výkon
ahoj svet Uncaught ReferenceError: b nie je definované
Vo vyššie uvedenom programe je premenná a deklarovaná vo vnútri funkcie a je k nej prístupný kdekoľvek vo vnútri funkcie (a sa stáva rozsahom funkcie).
Premenná b je však deklarovaná vo vnútri if
príkazu bloku. b bude mať blokovaný rozsah a je prístupný iba vo vnútri if
bloku.
Preto sa pri pokuse o prístup k b mimo if
bloku vyskytne chyba (ako je uvedené vyššie v programe).
Poznámka : Premenné deklarované vo vnútri funkcie budú mať rozsah pôsobnosti pre obidve var
a let
.
let neumožňuje znova deklarovať premenné
1. Premenná deklarovaná s var
sa dá znova deklarovať . Napríklad,
var a = 5; // 5 var a = 3; // 3
Premenná deklarovaná s let
nemôže byť deklarovaná v rovnakom bloku alebo rovnakom rozsahu. Napríklad,
let a = 5; let a = 3; // error
Výkon
Uncaught SyntaxError: Identifikátor 'a' už bol deklarovaný
2. Deklarovanie premennej var
v inom rozsahu alebo bloku zmení aj hodnotu vonkajšej premennej. Napríklad,
var a = 5; console.log(a); // 5 ( var a = 3; console.log(a); // 3 ) console.log(a); // 3
Pri opätovnom vyhlásení premennej s let
v inom rozsahu alebo bloku sa táto premenná považuje za inú premennú. A hodnota premennej mimo sa nemení. Napríklad,
let a = 5; console.log(a); // 5 ( let a = 3; console.log(a); // 3 ) console.log(a); // 5
3. Ak sa premenná deklarovaná ako var
použije v cykle, hodnota tejto premennej sa zmení. Napríklad,
var a = 2; for(var a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 3
Vo vyššie uvedenom programe for
slučka znovu deklaruje premennú a. Preto sa hodnota na konci a
zmení na 3 .
Keď sa v slučke použije premenná deklarovaná ako let , hodnota premennej sa nezmení. Napríklad,
let a = 2; for(let a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 2
In the above program, for
loop treats variable a as a different variable than the one declared above. And the scope of that variable is only inside the for
loop. Hence the value of variable a remains 2 at the end.
let Doesn't Allow Hoisting
The variables declared with var
are hoisted to the top of the scope of the program. For example,
console.log(a); var a; // undefined (not an error)
The keyword let
does not allow hoisting. For example,
console.log(a); let a; // Uncaught ReferenceError: a is not defined
If you want to learn more about hoisting, visit JavaScript Hoisting.
let and var Browser Support
Most of the modern browsers support the use of let
. However, some browsers do not fully support let
.
To learn more, visit JavaScript let browser support.
Poznámka : V prípade globálneho rozsahu sa obidve var
a let
budú správať rovnako. Napríklad,
var a = 5; // 5
Premenná a bude mať globálny rozsah a bude k nej možné pristupovať kdekoľvek v programe.
let a = 5; // 5
Premenná a bude mať globálny rozsah a bude k nej možné pristupovať kdekoľvek v programe.