Sobes.tech
Junior

Kas yra neįvardytos (undeclared) kintamosios?

sobes.tech AI

Atsakymas iš AI

„JavaScript“ neįvardyti kintamieji – tai kintamieji, kurie nebuvo deklaruoti naudojant raktinius žodžius var, let ar const, bet jiems buvo priskirta reikšmė:

// Tiesioginė deklaracija
let declaredVariable = "Aš esu deklaruotas";

// Neaiški priskyrimas (sukuria neįvardytą kintamąjį negriežtame režime)
// Griežtame režime ('use strict') tai sukels klaidą ReferenceError
undeclaredVariable = "Aš neesu deklaruotas";

Neįvardytų kintamųjų elgsena priklauso nuo vykdymo režimo:

  • Negriežtas režimas: Neįvardyto kintamojo priskyrimas sukuria globalų kintamąjį su tokiu pavadinimu Window objekte (naršyklėse). Tai laikoma bloga praktika, nes užteršia globalią erdvę ir apsunkina derinimą.
  • Griežtas režimas ('use strict'): Neįvardyto kintamojo priskyrimas sukels klaidą ReferenceError. Tai yra pageidaujamas elgesys, kuris užkerta kelią atsitiktiniam globalių kintamųjų kūrimui ir skatina labiau prognozuojamą kodą.

Neįvardyto kintamojo tikrinimui galima naudoti typeof. Negriežtame režime neįvardytas kintamasis turės 'undefined' tipą, kaip ir deklaruotas, bet neinicijuotas kintamasis:

let initializedButUndefined;
// console.log(typeof initializedButUndefined); // => 'undefined'

// Negriežtas režimas
// undeclaredVariable = "Patikrinimas";
// console.log(typeof undeclaredVariable); // => 'undefined'

// Tikrinimas, ar kintamasis egzistuoja
if (typeof potentiallyUndeclaredVariable !== 'undefined') {
    // Kodas, dirbantis su potentiallyUndeclaredVariable
}

Naudojant neįvardytus kintamuosius gali kilti klaidų ir tai apsunkina kodo palaikymą. Visada rekomenduojama aiškiai deklaruoti kintamuosius naudojant let, const ar var (nors var turi savo ypatybes ir šiuolaikiniame kode dažniau naudojami let ir const). Griežto režimo ('use strict') naudojimas yra standartinė praktika, siekiant išvengti tokių problemų.