wartości null i undefined

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 undefinedfalse. 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