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õhjustabReferenceErrorvea. 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.