Sobes.tech
Junior

Můžeš podrobněji vysvětlit rozdíly mezi null a undefined v JavaScriptu?

sobes.tech AI

Odpověď od AI

  • undefined:

    • Přiřazuje se proměnným, které byly deklarovány, ale nebyly inicializovány hodnotou.
    • Výchozí hodnota pro parametry funkcí, jimž nebyly předány argumenty.
    • Získá se při pokusu o přístup k neexistující vlastnosti objektu nebo prvku pole.
    • Datový typ — undefined.
  • null:

    • Je speciální hodnota, která je výslovně přiřazena proměnné k označení "nepřítomnosti hodnoty".
    • Reprezentuje záměrnou absenci jakéhokoliv objektu nebo primitivní hodnoty.
    • Datový typ — object (to je historická chyba JavaScriptu, ale tak to je).

Hlavní rozdíly v tabulce:

Charakteristika undefined null
Původ Nepřímý (výchozí) Přímý (přiřazeno vývojářem)
Účel Deklarováno, ale bez přiřazené hodnoty Záměrná absence hodnoty
Typ dat (typeof) undefined object
Logický kontext false false
Rovnost (==) null == undefined (pravda) null == undefined (pravda)
Přísná rovnost (===) null === undefined (nepravda) null === undefined (nepravda)

Příklad:

let a; // Deklarováno, ale neinitializováno -> undefined
console.log(a); // undefined

const obj = {};
console.log(obj.prop); // Přístup k neexistující vlastnosti -> undefined

function greet(name) {
  console.log(name);
}
greet(); // Parametr name nebyl předán -> undefined

let b = null; // Výslovně přiřazeno null
console.log(b); // null

let c = {};
c.data = null; // Vlastnosti data přiřazeno 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