2.1 Zmienne są referencjami
W JavaScript zmienne to referencje do obiektów, a nie same zmienne. To oznacza, że kiedy tworzysz zmienną w JavaScript, po prostu tworzysz referencję do obiektu w pamięci.
Ta cecha języka ma ważne konsekwencje dla pracy ze zmiennymi, szczególnie przy przekazywaniu obiektów do funkcji lub przypisywaniu ich innym zmiennym.
Kiedy tworzysz zmienną i przypisujesz jej wartość, JavaScript alokuje obiekt w pamięci dla tej wartości i sprawia, że zmienna jest referencją do tego obiektu. Jeśli przypiszesz jedną zmienną do drugiej, nowa zmienna będzie odnosić się do tego samego obiektu, co oryginalna zmienna. To oznacza, że zmiany dokonane przez jedną zmienną będą widoczne także w drugiej, jeśli ten obiekt można zmieniać.
Przykład:
let a = [1, 2, 3];
let b = a;
b.push(4);
console.log(a); // Wyświetli: [1, 2, 3, 4]
Dodaliśmy liczbę 4 do zmiennej b
, ale została ona dodana także do listy w zmiennej a
, ponieważ obie zmienne
są tylko referencjami do listy [1, 2, 3]
2.2 Typ undefined
W JavaScript istnieją dwa specjalne typy danych: null
i undefined
. Te typy często budzą pytania u developerów
z powodu ich podobieństwa, ale mają różne przeznaczenia i są używane w różnych sytuacjach. Przyjrzyjmy się im bliżej.
Typ undefined
Typ undefined
reprezentuje wartość zmiennej, która została zadeklarowana, ale nie zainicjalizowana. Ta wartość jest również zwracana
przy próbie dostępu do nieistniejącej właściwości obiektu lub elementu tablicy, który nie istnieje.
Przykłady
1. Niezainicjalizowana zmienna:
let x;
console.log(x); // undefined
2. Nieistniejąca właściwość obiektu:
let obj = {};
console.log(obj.property); // undefined
3. Nieistniejący element tablicy:
let array = [1, 2, 3];
console.log(array[5]); // undefined
4. Brakujący argument funkcji:
function myFunction(a, b) {
console.log(b); // undefined, jeśli wywołane jako myFunction(1)
}
myFunction(1);
Właściwości undefined:
undefined
jest typem danych i wartościątypeof undefined
zwracaundefined
2.3 Typ null
Typ null
reprezentuje zamierzoną nieobecność wartości. Ta wartość jest często używana do inicjalizacji
zmiennych, które później zostaną przypisane obiektowi, lub do czyszczenia wartości zmiennej.
Przykłady
1. Inicjalizacja zmiennej:
let obj = null;
console.log(obj); // null
2. Czyszczenie wartości zmiennej:
let user = { name: "Alice" };
user = null; // user teraz nie wskazuje na obiekt
Właściwości null:
null
jest wartością reprezentującą zamierzoną nieobecność wartościtypeof null
zwracaobject
, co jest uznawane za błąd w języku JavaScript (w rzeczywistościnull
nie jest obiektem)
2.4 Porównanie null i undefined
Mimo że null
i undefined
mogą być używane do oznaczania nieobecności
wartości, różnią się przeznaczeniem i kontekstem użycia.
Właściwość | null | undefined |
---|---|---|
Typ | Typ prosty | Typ prosty |
Przeznaczenie | Zamierzona nieobecność wartości | Niezainicjalizowana zmienna |
Zastosowanie | Inicjalizacja zmiennych, czyszczenie wartości | Nieistniejące właściwości, elementy tablicy |
Wartość domyślna | Nie | Tak (dla niezainicjalizowanych zmiennych, parametrów funkcji) |
Przykłady użycia
1. Inicjalizacja zmiennej obiektem lub tablicą:
let myObject = null;
let myArray = null;
2. Sprawdzanie wartości:
let value;
if (value === undefined) {
console.log("Zmienna nie jest zainicjalizowana.");
}
let result = null;
if (result === null) {
console.log("Brak wartości.");
}
3. Czyszczenie wartości:
let person = { name: "Alice" };
person = null; // Teraz person nie wskazuje na obiekt
4. Sprawdzanie istnienia właściwości:
let obj = {};
if (obj.property === undefined) {
console.log("Właściwość nie istnieje.");
}
Rozumienie różnic między null
a undefined
w JavaScript jest ważne dla prawidłowego zarządzania
wartościami i unikania błędów w kodzie.
undefined
zwykle wskazuje na niezainicjalizowane zmienne lub brakujące właściwości, podczas gdy
null
jest używany do jawnego wskazania na brak wartości.
Prawidłowe użycie tych specjalnych typów danych czyni kod bardziej zrozumiałym i przewidywalnym.
GO TO FULL VERSION