Sobes.tech
Junior

Kaip galima deklaruoti kintamuosius JavaScript? Paminėkite šių metodų skirtumus.

sobes.tech AI

Atsakymas iš AI

JavaScript'e galima deklaruoti kintamuosius trimis būdais: var, let, const.

Jų skirtumai:

Skirtumas var let const
Apimtis Funkcinė Blokinė Blokinė
Perrašymas Galimas Galimas Neleidžiamas
Hoisting Pakelia deklaraciją ir inicializaciją į undefined Pakelia deklaraciją, bet ne inicializaciją Pakelia deklaraciją, bet ne inicializaciją

Pavyzdžiai:

// var
function exampleVar() {
  var x = 10; // Funkcinė apimtis
  if (true) {
    var x = 20; // Galima perrašyti toje pačioje funkcijoje
    console.log(x); // 20
  }
  console.log(x); // 20 (kintamasis x iš if yra pasiekiamas čia)
}

console.log(x); // Klaida: ReferenceError: x nėra apibrėžtas (x nematomas už funkcijos ribų)

// Hoisting var
console.log(a); // undefined
var a = 5;
console.log(a); // 5
// let
function exampleLet() {
  let y = 10; // Blokinė apimtis
  if (true) {
    let y = 20; // Negalima perrašyti toje pačioje blokų struktūroje
    console.log(y); // 20 (kita y kintamoji)
  }
  console.log(y); // 10 (kintamasis y už bloko ribų)
}

console.log(y); // Klaida: ReferenceError: y nėra apibrėžtas

// Hoisting let
// console.log(b); // Klaida: ReferenceError: Negalima pasiekti 'b' prieš inicializaciją
let b = 5;
console.log(b); // 5
// const
function exampleConst() {
  const z = 10; // Blokinė apimtis
  // z = 20; // Klaida: TypeError: Priskyrimas prie konstantinės kintamosios. (Negalima perrašyti)
  if (true) {
    const z = 20; // Negalima perrašyti toje pačioje blokų struktūroje
    console.log(z); // 20 (kita z kintamoji)
  }
  console.log(z); // 10 (kintamasis z už bloko ribų)
}

console.log(z); // Klaida: ReferenceError: z nėra apibrėžtas

// Hoisting const
// console.log(c); // Klaida: ReferenceError: Negalima pasiekti 'c' prieš inicializaciją
const c = 5;
console.log(c); // 5

// Objektams ir masyvams, deklaruotiems per `const`, galima keisti jų turinį
const obj = { pavadinimas: 'Testas' };
obj.pavadinimas = 'Naujas Testas'; // Leidžiama
// obj = { pavadinimas: 'Kitas Testas' }; // Klaida