null undefined

undefined vs. null + ściąga do pobrania

Jaka jest różnica między undefined a null? Obie wartości reprezentują w końcu pustą wartość.

A jednak…

undefined == null //true
undefined === null //false

Undefined

Inerpreter zwraca undefined trafiając na zmienną albo własność obiektu, która nie jest zainicjalizowana, nie ma przypisanej wartości.
Undefined oznacza, że zmienna jeszcze nie istnieje, jest zadeklarowana, ale nie jest zainicjalizowana.

var foo;
foo; //undefined
typeof foo; //undefined

Różne przypadki wystąpienia undefined:

  • zmienna, która nie jest zainicjalizowana (nie ma przypisanej wartości)
  • własność obiektu, która nie istnieje
  • parametr funkcji, który nie jest podany
  • funkcja, która nie zwraca żadnej wartości
  • element tablicy, który nie istnieje

Null

Z kolei null jest wartością, która może być przypisana do zmiennej. Reprezentuje celowy brak wartości, referencji do obiektu.
Null oznacza, że zmienna istnieje, jest zadeklarowana oraz zainicjalizowana (posiada przypisaną wartość null, choć nie posiada jeszcze docelowej wartości).

var foo = null;
foo; //null
typeof foo; //object

Porównanie

Wychodzi na to, że undefined jest typem danych (typ prymitywny), natomiast null to obiekt. Stąd rozumiemy, skąd bierze się undefined === null //false.

Jednak dobrze wiemy, że zarówno undefined, jak i null są jednymi z 6 prymitywnych typów w JS.
Skąd więc typeof null; //object ?!

Stack mówi, że to stary błąd w implementacji JS. Przyjęło się jednak rozumienie, że null to przyszłościowy kontener dla obiektu. Stąd typeof null; //object jest OK, mimo iż null jest typu prymitywnego, a nie referencyjnego.

Bonus

Mam też dla Was ściągę na temat undefined. Przygotowałam ją na podstawie artykułu 7 tips to handle undefined in javascript. Ściąga skrótowo przedstawia różne przyczyny pojawienia się undefined oraz sposoby zapobiegania takim przypadkom.

Klikając na powyższy obrazek otworzycie go w oryginalnej rozdzielczości. Oczywiście powyższa ściąga to tylko pigułka artykułu, który dogłębnie omawia wszystkie przypadki pojawienia się undefined. Gorąco polecam Wam jego lekturę!


Dla formalności: ściągę przygotowałam w programie Gravit Designer. To jakieś azjatyckie cudo, które cały czas jest rozwijane (czytaj: bugi się łatają), odkryłam go jakieś 2 miesiące temu, bardzo pozytywnie mnie zaskoczył jako dosyć rozbudowana, aczkolwiek intuicyjna platforma do tworzenia grafik wszelakich. Ikony – oczywiście dzięki Freepik.

Nie bądźcie źli, że plik jest w formie .png. Niestety, Gravit ma cały czas problem z osadzaniem czcionek w formacie .pdf. W teorii ściąga powinna być formatu a4, jednak okazuje się chyba, że azjatyckie kartki a4 nieco różnią się od europejskich. Nie będę z tym walczyć

Artykuły, które mogą Ci się spodobać...

Wpisz hasło, którego szukasz i naciśnij ENTER, aby je wyszukać. Naciśnij ESC, aby anulować.

Dawaj na górę