Sobes.tech
Junior

Milyen módon lehet változókat deklarálni JavaScriptben? Nevezze meg ezek közötti különbségeket.

sobes.tech MI

Válasz az MI-től

JavaScript-ben a változókat három módon lehet bejelenteni: var, let, const.

Különbségek közöttük:

Különbség var let const
Hatókör Funkcionális Blokk Blokk
Újra deklarálható Lehetséges Lehetséges Nem lehetséges
Újra hozzárendelhető Lehetséges Lehetséges Nem lehetséges
Hoisting Emeli a deklarációt és az inicializálást undefined-re Emeli a deklarációt, de nem az inicializálást Emeli a deklarációt, de nem az inicializálást

Példák:

// var
functionldaVar() {
  var x = 10; // Funkcionális hatókör
  if (true) {
    var x = 20; // Újra deklarálható ugyanabban a funkcióban
    console.log(x); // 20
  }
  console.log(x); // 20 (az if-ből származó x elérhető itt)
}

console.log(x); // Hiba: ReferenceError: x nincs definiálva (x nem látható a funkción kívül)

// Hoisting a var-rel
console.log(a); // undefined
var a = 5;
console.log(a); // 5
// let
functionldaLet() {
  let y = 10; // Blokk hatókör
  if (true) {
    let y = 20; // Ugyanabban a blokkban nem újra deklarálható
    console.log(y); // 20 (más y)
  }
  console.log(y); // 10 (a blokk küli y)
}

console.log(y); // Hiba: ReferenceError: y nincs definiálva

// Hoisting a let-vel
// console.log(b); // Hiba: ReferenceError: nem lehet hozzáférni a 'b'-hez a inicializálás előtt
let b = 5;
console.log(b); // 5
// const
functionldaConst() {
  const z = 10; // Blokk hatókör
  // z = 20; // Hiba: TypeError: Átadás állandó változónak. (Nem lehet újra hozzárendelni)
  if (true) {
    const z = 20; // Ugyanabban a blokkban nem újra deklarálható
    console.log(z); // 20 (más z)
  }
  console.log(z); // 10 (a blokk küli z)
}

console.log(z); // Hiba: ReferenceError: z nincs definiálva

// Hoisting a const-vel
// console.log(c); // Hiba: ReferenceError: nem lehet hozzáférni a 'c'-hez a inicializálás előtt
const c = 5;
console.log(c); // 5

// Az állandóként deklarált objektumok és tömbök tartalma módosítható
const obj = { name: 'Test' };
obj.name = 'Új Test'; // Megengedett
// obj = { name: 'Másik Test' }; // Hiba