Nullish coalescing z ??
Proszę podawać wartości domyślne tylko dla null i undefined.
Nullish coalescing z ?? to bezpłatna lekcja JavaScript Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej JavaScript Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs JavaScript Academy zawiera 4 lekcji w sumie.
Podawanie wartości domyślnych
Często potrzebna jest wartość zastępcza, gdy brakuje danej wartości. Operator koalescencji wartości nullish pozwala w przejrzysty sposób podawać wartości domyślne tylko wtedy, gdy jest to potrzebne.
const name = undefined;
console.log(name ?? "Guest"); // "Guest"Operator ??
Operator dwóch znaków zapytania zwraca wartość z prawej strony tylko wtedy, gdy lewa strona ma wartość null lub undefined.
console.log(null ?? "fallback"); // "fallback"
console.log(undefined ?? "fallback"); // "fallback"
console.log("hi" ?? "fallback"); // "hi"Dlaczego nie używać ||
Operator logiczny OR || używa wartości zastępczej dla każdej wartości falsy, w tym 0, "" i false, co często prowadzi do błędów w przypadku rzeczywistych danych.
console.log(0 || 10); // 10 (probably unwanted)
console.log(0 ?? 10); // 0 (keeps the real value)Przypadek pustego ciągu
Operator || zastępuje celowo ustawiony pusty ciąg, natomiast operator ?? go zachowuje, ponieważ "" nie jest wartością nullish.
const note = "";
console.log(note || "none"); // "none"
console.log(note ?? "none"); // ""Wartość false jest zachowywana
Prawdziwa wartość false zostaje zachowana przez ??, ale zostałaby zastąpiona przez ||.
const enabled = false;
console.log(enabled ?? true); // false
console.log(enabled || true); // trueBezpieczne odczytywanie konfiguracji
Operator ?? idealnie nadaje się do ustawień, w których 0 lub pusty ciąg są prawidłowymi opcjami, które użytkownik może wybrać celowo.
function getVolume(settings) {
return settings.volume ?? 50;
}
console.log(getVolume({ volume: 0 })); // 0Działa ze zmiennymi
Działa z dowolnymi wyrażeniami, zwracając pierwszy operand, który nie ma wartości nullish.
let cached = null;
const value = cached ?? computeValue();
function computeValue() { return 99; }
console.log(value); // 99Ewaluacja z krótkim spięciem
Podobnie jak || i &&, operator ?? stosuje ewaluację z krótkim spięciem: jeśli lewa strona nie ma wartości nullish, prawa strona nigdy nie jest obliczana.
function side() { console.log("called"); return 1; }
const x = "ready" ?? side(); // side() never runs
console.log(x);Nie można go bezpośrednio łączyć z && ani ||
Łączenie ?? z && lub || bez nawiasów powoduje błąd składni, aby uniknąć niejednoznaczności.
const a = true, b = null;
// const c = a || b ?? 1; // SyntaxError
const c = (a || b) ?? 1;
console.log(c);Domyślne parametry funkcji a ??
Parametry domyślne mają zastosowanie tylko wtedy, gdy argument ma wartość undefined. Operator ?? obsługuje również jawnie przekazaną wartość null.
function greet(name = "Guest") { return "Hi " + name; }
console.log(greet(null)); // "Hi null"
function greet2(name) { return "Hi " + (name ?? "Guest"); }
console.log(greet2(null)); // "Hi Guest"Kiedy wybrać który operator
Operatora ?? należy używać, gdy 0, "" lub false są prawidłowymi wartościami, które trzeba zachować. Operatora || należy używać tylko wtedy, gdy każda wartość falsy powinna zostać zastąpiona.
const retries = 0;
console.log(retries ?? 3); // 0 keptSzybkie sprawdzenie
Porównaj operatory.
Podsumowanie
Operator ?? zwraca prawą stronę tylko wtedy, gdy lewa strona ma wartość null lub undefined, zachowując 0, "" i false. Dzięki temu jest bezpieczniejszy niż || przy podawaniu wartości domyślnych dla rzeczywistych danych. Stosuje ewaluację z krótkim spięciem i nie można go łączyć z &&/|| bez użycia nawiasów.
Często zadawane pytania
Czy lekcja „Nullish coalescing z ??” jest bezpłatna?
Tak — pełny tekst „Nullish coalescing z ??” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu JavaScript Academy, przejdź na CoddyKit PRO. Kurs JavaScript Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Nullish coalescing z ??”?
Proszę podawać wartości domyślne tylko dla null i undefined. Ćwiczysz JavaScript Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć JavaScript Academy?
Nie wymagamy żadnego doświadczenia. JavaScript Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Nullish coalescing z ??”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji JavaScript Academy?
Tak. Każda lekcja JavaScript Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Optional chaining z operatorem ?.
- Nullish coalescing z ??
- Łączenie ?. i ??
- Opcjonalne wywołania i dostęp indeksowany