Sobes.tech
Junior

Mis on deklareerimata (undeclared) muutujad?

sobes.tech AI

Vastus AI-lt

JavaScript-s ebavaidatud muutujad on muutujad, mis ei ole deklareeritud var, let või const võtmesõnadega, kuid neile on omistatud väärtus:

// Selge deklareerimine
let declaredVariable = "Ma olen deklareeritud";

// Ebaselge omistamine ( loob deklareerimata muutuja mitterangelt režiimil)
// Rangelt ('use strict') see põhjustab ReferenceError vea
undeclaredVariable = "Ma ei ole deklareeritud";

Ebaselgete muutujate käitumine sõltub koodi täitmise režiimist:

  • Ei-rangelt režiim: Ebaselgele muutjale väärtuse omistamine loob globaalse muutuja selle nimega Window objekti (brauserites). Seda peetakse halbaks praktikaks, kuna see saastab globaalse ruumi ja raskendab silumist.
  • Rangelt režiim ('use strict'): Ebaselgele muutjale väärtuse omistamine põhjustab ReferenceError vea. See on soovitud käitumine, mis takistab juhuslikku globaalseid muutujaid loomist ja soodustab etteaimatavat koodi.

Ebaselge muutuja kontrollimiseks saab kasutada typeof. Ei-rangelt režiimis on ebaselge muutuja 'undefined' tüüp, nagu ka deklareeritud, kuid initsialiseerimata muutuja:

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

// Ei-rangelt režiim
// undeclaredVariable = "Kontroll";
// console.log(typeof undeclaredVariable); // => 'undefined'

// Muutuja olemasolu kontroll
if (typeof potentiallyUndeclaredVariable !== 'undefined') {
    // Kood potentialUndeclaredVariable'iga
}

Ebaselgete muutujate kasutamine võib olla potentsiaalsete vigade allikas ja raskendab koodi hooldust. Soovitatav on alati selgelt deklareerida muutujad let, const või var abil (kuigi var-il on omadused ja kaasaegses koodis kasutatakse sagedamini let ja const). Rangelt režiimi ('use strict') kasutamine on standardpraktika selliste probleemide ennetamiseks.