JavaScript ma wiele sposobów wskazywania braku wartości. Na tej stronie opisujemy 2 najczęstsze sposoby: null
i undefined
.
null
Słowo kluczowe null
oznacza celowo zdefiniowany brak wartości. null
jest elementem prymitywnym, chociaż operator typeof
zwraca, że null
jest obiektem.
To błąd przeniesiony z pierwszej wersji JavaScriptu, który celowo pozostawiono bez zmian, aby uniknąć zakłócenia działania oczekiwanego w internecie.
typeof null
> object
Możesz zdefiniować zmienną jako null
z oczekiwaniami, że będzie ona odzwierciedlać wartość przypisaną do niej w którymś momencie w skrypcie lub wartość wyraźnie brakującą. Możesz też przypisać wartość null
do istniejącego odwołania, aby usunąć poprzednią wartość.
undefined
undefined
to wartość podstawowa przypisana do zmiennych, które zostały właśnie zadeklarowane, lub wynikowej wartości operacji, która nie zwraca żadnej wartości. Może się tak zdarzyć, jeśli zadeklarujesz funkcję w konsoli programisty przeglądarki:
function myFunction() {}
> undefined
Funkcja bezpośrednio zwraca undefined
, gdy instrukcja return
nie zwraca żadnej wartości.
(function() {
return;
}());
> undefined
Porównanie: null
i undefined
Chociaż funkcje undefined
i null
częściowo się pokrywają, mają różne przeznaczenie. W najściślejszym sensie null
reprezentuje wartość celowo zdefiniowaną jako „pusta”, a undefined
oznacza brak przypisanej wartości.
Wartości null
i undefined
są równoważne, ale nie są identyczne.
Operator luźnej równości scala operandy różnych typów na wartości logiczne, przez co null
i undefined
są false
. Operator ścisłej równości uznaje operandy różnych typów danych za nierówne.
null == undefined
> true
null === undefined
> false
W przeciwieństwie do zarezerwowanego słowa kluczowego null
undefined
jest właściwością obiektu globalnego. Ta decyzja została podjęta na wczesnym etapie programowania JavaScriptu i zezwoliła na całkowite zastąpienie undefined
przez starsze przeglądarki. W nowoczesnych przeglądarkach nadal można używać undefined
jako identyfikatora w zakresach nieglobalnych, zastępując jego wartość uwzględnioną w zakresie tej deklaracji. Nigdy nie używaj undefined
jako identyfikatora. Może powodować nieoczekiwane zachowania i wprowadzać w błąd przyszłych właścicieli bazy kodu.
Sprawdź swoją wiedzę
Co zwraca typeof null
?
object
undefined
primitive
string