Sobes.tech
Junior

Kas saak täpsemalt selgitada erinevusi null ja undefined vahel JavaScriptis?

sobes.tech AI

Vastus AI-lt

  • undefined:

    • Muutujatele omistatakse, kui need on deklareeritud, kuid neile pole väärtust määratud.
    • Funktsiooni parameetrite vaikimisi väärtus, kui argumente ei edastata.
    • Saadakse, kui püüate ligi pääseda objekti või massiivi olematule omadusele.
    • Andmetüüp — undefined.
  • null:

    • On spetsiaalne väärtus, mis otseselt omistatakse muutujale, tähistamaks "väärtuse puudumist".
    • Esindab teadlikku kõigi objekti või primitiivse väärtuse puudumist.
    • Andmetüüp — object (see on JavaScripti ajalooline viga, kuid nii on).

Peamised erinevused tabelis:

Omadus undefined null
Pärinemine Kaudne (vaikimisi) Otsene (arendaja määrab)
Otstarve Deklareeritud, kuid väärtus määramata Teadlik väärtuse puudumine
Andmetüüp (typeof) undefined object
Boolean kontekst false false
Võrdlus (==) null == undefined (tõsi) null == undefined (tõsi)
Võrdlus (===) null === undefined (väär) null === undefined (väär)

Näide:

let a; // Deklareeritud, kuid mitte initsialiseeritud -> undefined
console.log(a); // undefined

const obj = {};
console.log(obj.prop); // Juurdepääs mitteolevatele omadustele -> undefined

function greet(name) {
  console.log(name);
}
greet(); // Parameeter ei edastata -> undefined

let b = null; // Selgelt määratud null
console.log(b); // null

let c = {};
c.data = null; // Omadusele määratud null
console.log(c.data); // null

console.log(typeof a); // undefined
console.log(typeof b); // object
console.log(null == undefined); // true
console.log(null === undefined); // false