Junior
Можеш ли детаљније да објасниш разлике између null и undefined у JavaScript-у?
sobes.tech АИ
Одговор од АИ
-
undefined:- Dodeljuje se promenljivima koje su deklarisane, ali nisu inicijalizovane vrednošću.
- Podrazumevana vrednost za parametre funkcija kojima nisu prosleđeni argumenti.
- Dobija se pokušajem pristupa nepostojećem svojstvu objekta ili elementu niza.
- Tip podataka —
undefined.
-
null:- To je posebna vrednost koja se eksplicitno dodeljuje promenljivoj da označi "odsustvo vrednosti".
- Predstavlja namerno odsustvo bilo kog objekta ili primitivne vrednosti.
- Tip podataka —
object(ovo je istorijska greška u JavaScript-u, ali tako je).
Glavne razlike u tabeli:
| Karakteristika | undefined |
null |
|---|---|---|
| Poreklo | Implicito (po defaultu) | Ekslicitno (dodeljuje ga programer) |
| Svrha | Deklarisano, ali ne dodeljeno vrednost | Namerno odsustvo vrednosti |
Tip podataka (typeof) |
undefined |
object |
| Logički kontekst | false |
false |
Jednakost (==) |
null == undefined (tačno) |
null == undefined (tačno) |
Stroga jednakost (===) |
null === undefined (netačno) |
null === undefined (netačno) |
Primer:
let a; // Deklarisano, ali ne inicijalizovano -> undefined
console.log(a); // undefined
const obj = {};
console.log(obj.prop); // Pristup nepostojećoj svojstvu -> undefined
function greet(name) {
console.log(name);
}
greet(); // Parametar name nije prosleđen -> undefined
let b = null; // Ekslicitno dodeljeno null
console.log(b); // null
let c = {};
c.data = null; // Svojstvu data dodeljeno 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