Junior
Czy możesz bardziej szczegółowo wyjaśnić różnice między null a undefined w JavaScript?
sobes.tech AI
Odpowiedź od AI
-
undefined:- Przypisywane do zmiennych zadeklarowanych, ale nie zainicjalizowanych wartością.
- Domyślna wartość dla parametrów funkcji, którym nie przekazano argumentów.
- Uzyskuje się, próbując uzyskać dostęp do nieistniejącej właściwości obiektu lub elementu tablicy.
- Typ danych —
undefined.
-
null:- To specjalna wartość przypisana jawnie do zmiennej, aby oznaczyć "brak wartości".
- Reprezentuje celowe brak jakiegokolwiek obiektu lub wartości prymitywnej.
- Typ danych —
object(to jest błąd historyczny JavaScript, ale tak jest).
Główne różnice w tabeli:
| Charakterystyka | undefined |
null |
|---|---|---|
| Pochodzenie | Niejawne (domyślne) | Jawne (przypisane przez programistę) |
| Przeznaczenie | Zadeklarowane, ale nie przypisano wartości | Celowe brak wartości |
Typ danych (typeof) |
undefined |
object |
| Kontekst boolowski | false |
false |
Równość (==) |
null == undefined (true) |
null == undefined (true) |
Równość (===) |
null === undefined (false) |
null === undefined (false) |
Przykład:
let a; // Zadeklarowane, ale nie zainicjalizowane -> undefined
console.log(a); // undefined
const obj = {};
console.log(obj.prop); // Dostęp do nieistniejącej właściwości -> undefined
function greet(name) {
console.log(name);
}
greet(); // Nie przekazano parametru name -> undefined
let b = null; // Jawnie przypisano null
console.log(b); // null
let c = {};
c.data = null; // Właściwości data przypisano 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