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