Operator koalescencji null w JavaScript
Ten artykuł wyjaśnia operator koalescencji null w JavaScript.
YouTube Video
Operator koalescencji null w JavaScript
W JavaScript operator koalescencji null (??) sprawdza, czy wartość jest null lub undefined, i zwraca inną domyślną wartość, jeśli tak jest. Jest podobny do często używanego operatora logicznego LUB (||), ale różni się tym, że obsługuje tylko wartości null i undefined.
Operator logiczny OR zwraca prawą wartość, jeśli lewa wartość jest fałszywa, podczas gdy operator łączenia nullish zwraca prawą wartość tylko wtedy, gdy lewa wartość to null lub undefined. Ta funkcja umożliwia właściwe obsługiwanie wartości takich jak 0 i puste ciągi ("").
Podstawowa składnia
1let result = value ?? defaultValue;valueto wartość, która jest sprawdzana.defaultValueto wartość zwracana, gdyvaluetonulllubundefined.
Przykłady użycia operatora koalescencji null
Poniższy przykład pokazuje proces zwracania domyślnej wartości, gdy napotkane zostanie null lub undefined.
1let name = null;
2let defaultName = "Anonymous";
3
4// If name is null or undefined, 'Anonymous' is returned
5let displayName = name ?? defaultName;
6console.log(displayName); // "Anonymous"
W tym kodzie, ponieważ name ma wartość null, zostaje zwrócona wartość defaultName, czyli "Anonymous". Jeśli name ma wartość inną niż null lub undefined, ta wartość zostaje zwrócona.
Różnice względem operatora logicznego LUB
Operator łączenia nullish jest podobny do operatora logicznego OR, ale ma istotną różnicę. Operator logiczny OR sprawdza 'fałszywe' wartości (false, 0, NaN, "", null, undefined, itp.), podczas gdy operator łączenia nullish sprawdza tylko null i undefined.
Przykład użycia operatora logicznego LUB:
1let count = 0;
2let defaultCount = 10;
3
4// Since count is falsy (0), defaultCount is returned
5let result = count || defaultCount;
6console.log(result); // 10
Przykład użycia operatora koalescencji null:
1let count = 0;
2let defaultCount = 10;
3
4// Since count is neither null nor undefined, count is returned as is
5let result = count ?? defaultCount;
6console.log(result); // 0
Dzięki temu operator łączenia nullish zachowuje prawidłowe wartości, takie jak 0 i puste ciągi (""), i zwraca wartość domyślną tylko wtedy, gdy jest to konieczne. Ponieważ operator logiczny OR traktuje te wartości jako fałszywe i zwraca wartość domyślną, ważne jest, aby wybrać odpowiedni operator w zależności od przypadku użycia.
Przykład użycia w połączeniu:
Operator łączenia nullish może być również łączony z innymi operatorami logicznymi, ale w takich przypadkach należy zachować ostrożność.
1let a = null;
2let b = 0;
3let c = false;
4
5// SyntaxError
6let result = a ?? b || c;- Na przykład, gdy używasz go razem z operatorem logicznym OR (
||) lub AND (&&), nawiasy powinny być używane, aby wyjaśnić kolejność operacji.
1let a = null;
2let b = 0;
3let c = false;
4
5let result = (a ?? b) || c;
6console.log(result); // false
- W tym przykładzie najpierw oceniane jest
a ?? b, a ponieważama wartośćnull, zwracane jestb. Następnie oceniane jestb || c, a ponieważbjest fałszywe, na końcu zostaje zwróconec.
Przypadki, w których operator łączenia nullish jest przydatny
Poniżej przedstawiono przypadki, w których operator łączenia nullish jest przydatny.
- Domyślne wartości dla formularzy To może być używane w sytuacjach, gdy dla pól formularza ustawiana jest wartość domyślna, jeśli użytkownik nic nie wprowadzi.
1let userAge = null;
2let defaultAge = 18;
3let age = userAge ?? defaultAge;
4console.log(age); // 18
- Obsługa odpowiedzi API
Przetwarzanie zastępcze może być wykonane, gdy wartość w odpowiedziach z API to
nulllubundefined.
1let apiResponse = {
2 title: "New Article",
3 description: null
4};
5
6let title = apiResponse.title ?? "Untitled";
7let description = apiResponse.description ?? "No description available";
8console.log(title); // "New Article"
9console.log(description); // "No description available"
Podsumowanie
Operator łączenia nullish (??) jest bardzo przydatny do inicjalizacji danych i obsługi odpowiedzi API, ponieważ zwraca wartość domyślną w przypadku null lub undefined. W szczególności jest to lepszy wybór niż tradycyjny operator logiczny OR (||), gdy chcesz prawidłowo obsługiwać fałszywe wartości, takie jak 0 lub puste ciągi.
O operatorze przypisania Nullish Coalescing (??=)
Przegląd
W JavaScript wprowadzono operator przypisania Nullish Coalescing ??=, aby efektywnie przypisać nową wartość do zmiennych, które mają wartość null lub undefined. Ten operator jest wygodnym skrótem do przypisania wartości do zmiennej tylko wtedy, gdy ma ona wartość null lub undefined.
Podstawowe użycie
Operator przypisania łączenia nullish działa w następujący sposób:.
- Jeśli zmienna ma wartość
nulllubundefined, przypisuje wartość z prawej strony. - Jeśli zmienna nie ma wartości
nullaniundefined, nie robi nic i zachowuje obecną wartość.
Składnia
Podstawowa składnia operatora przypisania łączenia nullish jest następująca:.
1x ??= y;yzostaje przypisane dox, jeślixma wartośćnulllubundefined.- Jeśli
xjuż ma wartość (nienullaniundefined), wartośćxnie zostanie zmieniona.
Przykład
Spójrzmy na podstawowy przykład operatora przypisania z koalescencją null.
1let userName = null;
2let defaultName = "Guest";
3
4// Since userName is null, defaultName is assigned
5userName ??= defaultName;
6
7console.log(userName); // "Guest"
- W tym kodzie, ponieważ
userNamema wartośćnull, przypisywana jest wartośćdefaultName.
Oto przykład, w którym wartość nie jest ani null, ani undefined.
1let userName = "Alice";
2let defaultName = "Guest";
3
4// Since userName is "Alice", nothing is assigned
5userName ??= defaultName;
6
7console.log(userName); // "Alice"
- W tym przypadku, ponieważ
"Alice"jest już ustawione dlauserName, nie jest dokonywane żadne przypisanie.
Porównanie z innymi operatorami przypisania
JavaScript posiada również kilka innych operatorów przypisania. W szczególności ważna jest różnica w stosunku do operatora przypisania logicznego OR (||=).
1let value = 0;
2value ||= 10; // Assign 10 if value is falsy
3console.log(value); // 10
Operator przypisania logicznego OR przypisuje wartość nawet w przypadku fałszywych wartości, takich jak false, 0 lub pusty ciąg (""), podczas gdy operator przypisania łączenia nullish działa tylko wtedy, gdy wartość to null lub undefined.
1let value = 0;
2value ??= 10;
3// Since value is neither null nor undefined,
4// nothing is assigned
5console.log(value); // 0
Ponieważ operator przypisania łączenia nullish działa tylko na null lub undefined, jest bardzo przydatny, gdy chcesz zachować wartości, takie jak 0 lub false.
Praktyczne przypadki użycia
Przypadek użycia w rzeczywistym świecie operatora przypisania z koalescencją pustą może wyglądać następująco:.
-
Ustawianie wartości domyślnych
Jest to przydatne do ustawiania wartości domyślnych, gdy dane wejściowe użytkownika lub odpowiedzi API mogą być
nulllubundefined.
1let userSettings = {
2 theme: null,
3 notifications: true
4};
5
6// Since theme is null, "light" is assigned
7userSettings.theme ??= "light";
8
9console.log(userSettings.theme); // "light"
-
Obsługa opcjonalnych parametrów
Może być również używane do wykonywania domyślnych działań, gdy argumenty funkcji nie są określone.
1function greet(name) {
2 name ??= "Guest";
3 console.log(`Hello, ${name}!`);
4}
5
6greet(); // "Hello, Guest!"
7greet("Alice"); // "Hello, Alice!"
Podsumowanie
Operator przypisania łączenia nullish (??=) przypisuje wartość tylko wtedy, gdy wartość po lewej stronie to null lub undefined, co sprawia, że kod jest bardziej zwięzły i pomaga zapobiegać niezamierzonym przypisaniom. Szczególnie podczas pracy z wartościami „fałszywymi”, takimi jak 0 lub false, może być bardziej odpowiedni niż tradycyjny operator logiczny OR (||=).
Korzystając z tego operatora, możesz tworzyć bardziej solidny i czytelny kod.
Możesz śledzić ten artykuł, korzystając z Visual Studio Code na naszym kanale YouTube. Proszę również sprawdzić nasz kanał YouTube.