Sobes.tech
Junior

Ar galite išsamiau paaiškinti skirtumus tarp null ir undefined JavaScript'e?

sobes.tech AI

Atsakymas iš AI

  • undefined:

    • Kintamiesiems priskiriama, kai jie yra deklaruoti, bet neįvestas reikšmė.
    • Yra numatytoji reikšmė funkcijų parametrams, kuriems argumentai nėra perduoti.
    • Gaunama bandant prieiti prie neegzistuojančio objekto savybės arba masyvo elemento.
    • Duomenų tipas — undefined.
  • null:

    • Yra speciali reikšmė, kuri aiškiai priskiriama kintamajam, žymint "reikšmės nebuvimą".
    • Reprezentuoja tyčinį bet kokio objekto ar primityvios reikšmės nebuvimą.
    • Duomenų tipas — object (tai istorinė JavaScript klaida, bet taip yra).

Pagrindiniai skirtumai lentelėje:

Savybė undefined null
Kilmė Nepriklausoma (numatytoji) Tiesioginė (kurią nustato programuotojas)
Paskirtis Deklaruota, bet nepriskirta reikšmė Tyčiniai reikšmės nebuvimas
Duomenų tipas (typeof) undefined object
Boolean kontekstas false false
Lyginimas (==) null == undefined (teisinga) null == undefined (teisinga)
Lyginimas (===) null === undefined (neteisinga) null === undefined (neteisinga)

Pavyzdys:

let a; // Deklaruota, bet neįvesta -> undefined
console.log(a); // undefined

const obj = {};
console.log(obj.prop); // Prieiga prie neegzistuojančios savybės -> undefined

function greet(name) {
  console.log(name);
}
greet(); // Parametras neperduotas -> undefined

let b = null; // Aiškiai priskirta null
console.log(b); // null

let c = {};
c.data = null; // Savybei priskirta 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