Sobes.tech
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