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