Sobes.tech
Junior

Môžeš podrobnejšie vysvetliť rozdiely medzi null a undefined v JavaScripte?

sobes.tech AI

Odpoveď od AI

  • undefined:

    • Priraďuje sa premenným, ktoré boli oznámené, ale nie sú inicializované hodnotou.
    • Je predvolenou hodnotou pre parametre funkcií, ktorým neboli odovzdané argumenty.
    • Získa sa pri pokuse o prístup k neexistujúcej vlastnosti objektu alebo prvku poľa.
    • Typ údajov — undefined.
  • null:

    • Je špeciálnou hodnotou, ktorá sa výslovne priraďuje premennej na označenie "neexistencie hodnoty".
    • Predstavuje úmyselné chýbanie akéhokoľvek objektu alebo primitívnej hodnoty.
    • Typ údajov — object (je to historická chyba JavaScriptu, ale tak to je).

Hlavné rozdiely v tabuľke:

Charakteristika undefined null
Pôvod Nepriame (predvolené) Priame (priraďuje vývojár)
Účel Oznámené, ale nie priradené hodnote Úmyselne chýbajúca hodnota
Typ údajov (typeof) undefined object
Boolean kontext false false
Rovnosť (==) null == undefined (true) null == undefined (true)
Rovnosť (===) null === undefined (false) null === undefined (false)

Príklad:

let a; // Oznámené, ale nie inicializované -> undefined
console.log(a); // undefined

const obj = {};
console.log(obj.prop); // Prístup k neexistujúcej vlastnosti -> undefined

function greet(name) {
  console.log(name);
}
greet(); // Parameter name nie je odovzdaný -> undefined

let b = null; // Výslovne priradené null
console.log(b); // null

let c = {};
c.data = null; // Vlastnosti data je priradené 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