Sobes.tech
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 var függvényhatókörrel (function scope) rendelkezik. Ez azt jelenti, hogy egy függvényen belül a var-ral deklarált változó az egész függvényben látható.
    • A let blokkhatókörrel (block scope) rendelkezik. A változó csak a legközelebbi {} blokkon belül látható.
  • Hoisting:

    • A var-ral deklarált változók a függvényük tetejére kerülnek és undefined é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).
  • Ismételt deklarálás:

    • A var lehetővé teszi ugyanazon változó többszöri deklarálását ugyanabban a hatókörben.
    • A let nem engedélyezi ugyanazon változó újra deklarálását ugyanabban a hatókörben.

Példa:

functionlda() {
  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.