V tomto kurzu se na příkladech dozvíte o rozdílech mezi let a var v JavaScriptu.
V JavaScriptu, jak klíčová slova var
a let
jsou používány deklarovat proměnné.
let
Klíčových slov byl představen v novější verzi JavaScriptu známé jako ES6 (ES2015) . A je to upřednostňovaný způsob deklarace proměnných.
JavaScript umožňuje Vs var
Zde je přehled rozdílů mezi let
a var
.
nechat | var |
---|---|
let je blokovaný. | var je rozsah působnosti. |
let neumožňuje znovu deklarovat proměnné. | var umožňuje znovu deklarovat proměnné. |
K zvedání nedochází v let. | K zvedání dochází u var. |
JavaScript umožňuje Vs var v místním rozsahu
var je rozsah působnosti
Proměnnou deklarovanou uvnitř funkce s var
lze použít kdekoli v rámci funkce. Napří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
Ve výše uvedeném programu je proměnná a deklarována pomocí var
. Proměnnou a lze použít kdekoli uvnitř funkce greet
.
let je blokovaný
Proměnná deklarovaná pomocí let
je přístupná pouze uvnitř bloku kódu. Napří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ýstup
ahoj svět Uncaught ReferenceError: b není definováno
Ve výše uvedeném programu je proměnná a deklarována uvnitř funkce a lze k ní přistupovat kdekoli uvnitř funkce (a stane se rozsahem funkce).
Proměnná b je však deklarována uvnitř příkazu if
bloku. b bude blokově vymezeno a lze k němu přistupovat pouze uvnitř if
bloku.
Proto při pokusu o přístup k b mimo if
blok dojde k chybě (jak je uvedeno výše v programu).
Poznámka : Proměnné deklarované uvnitř funkce budou mít rozsah funkcí pro obě var
a let
.
let neumožňuje znovu deklarovat proměnné
1. Proměnnou deklarovanou pomocí var
lze znovu deklarovat. Například,
var a = 5; // 5 var a = 3; // 3
Proměnnou deklarovanou pomocí let
nelze znovu deklarovat ve stejném bloku nebo ve stejném rozsahu. Například,
let a = 5; let a = 3; // error
Výstup
Uncaught SyntaxError: Identifikátor 'a' již byl deklarován
2. Redeklarování proměnné s var
v jiném rozsahu nebo bloku změní také hodnotu vnější proměnné. Například,
var a = 5; console.log(a); // 5 ( var a = 3; console.log(a); // 3 ) console.log(a); // 3
Redeclaring a variable let
in in a different scope or block treats that variable as a different variable. A hodnota proměnné venku se nemění. Například,
let a = 5; console.log(a); // 5 ( let a = 3; console.log(a); // 3 ) console.log(a); // 5
3. Když se proměnná deklarovaná pomocí var
použije ve smyčce, změní se hodnota této proměnné. Například,
var a = 2; for(var a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 3
Ve výše uvedeném programu for
smyčka znovu deklaruje proměnnou a. Proto se hodnota na konci a
změní na 3 .
Když se ve smyčce použije proměnná deklarovaná pomocí let , hodnota proměnné se nezmění. Například,
let a = 2; for(let a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 2
Ve výše uvedeném programu for
smyčka zachází s proměnnou a jako s jinou proměnnou, než je deklarována výše. A rozsah této proměnné je pouze uvnitř for
smyčky. Proto je hodnota proměnné zůstává 2 na konci.
let neumožňuje zvedání
Proměnné deklarované pomocí var
jsou zvednuty na začátek rozsahu programu. Například,
console.log(a); var a; // undefined (not an error)
Klíčové slovo let
neumožňuje zvedání. Například,
console.log(a); let a; // Uncaught ReferenceError: a is not defined
Pokud se chcete o zvedání dozvědět více, navštivte JavaScript Zvedání.
let and var Podpora prohlížeče
Většina moderních prohlížečů podporuje použití let
. Některé prohlížeče však plně nepodporují let
.
Chcete-li se dozvědět více, navštivte JavaScript a nechte podporu prohlížeče.
Poznámka : V případě globálním měřítku, a to jak var
a let
bude chovat stejným způsobem. Například,
var a = 5; // 5
Proměnná a bude mít globální rozsah a lze k ní přistupovat kdekoli v programu.
let a = 5; // 5
Proměnná a bude mít globální rozsah a lze k ní přistupovat kdekoli v programu.