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