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