Junior — Middle
Mi a különbség a var és a let kulcsszavakkal történő változóbejelentés között, és mik a jellemzőik?
sobes.tech MI
Válasz az MI-től
A JavaScript-ben (és Node.js-ben) a var és let kulcsszavakat változók deklarálására használják, de fontos különbségek vannak közöttük:
-
Hatókör:
- A
varfüggvényhatókörrel (function scope) rendelkezik. Ez azt jelenti, hogy egy függvényen belül avar-ral deklarált változó az egész függvényben látható. - A
letblokkhatókörrel (block scope) rendelkezik. A változó csak a legközelebbi{}blokkon belül látható.
- A
-
Hoisting:
- A
var-ral deklarált változók a függvényük tetejére kerülnek ésundefinedértékkel inicializálódnak. - A
let-tel is felhozhatók, de nem inicializálódnak, így a deklaráció előtt való hozzáférés hibát eredményez (Időszakos Halott Zóna).
- A
-
Ismételt deklarálás:
- A
varlehetővé teszi ugyanazon változó többszöri deklarálását ugyanabban a hatókörben. - A
letnem engedélyezi ugyanazon változó újra deklarálását ugyanabban a hatókörben.
- A
Példa:
function példa() {
console.log(a); // undefined
// console.log(b); // Hiba: nem használható a deklaráció előtt
var a = 1;
let b = 2;
if (true) {
var a = 3; // felülírja az a változót a függvényben
let b = 4; // új b változó az if blokkban
console.log(b); // 4
}
console.log(a); // 3
console.log(b); // 2
}
példa();
A let használata előnyösebb a hatókör jobb kontrollja és a var-ral kapcsolatos hibák elkerülése érdekében.