Nullish Coalescing-operator i JavaScript
Denne artikel forklarer Nullish Coalescing-operatoren i JavaScript.
YouTube Video
Nullish Coalescing-operator i JavaScript
I JavaScript evaluerer Nullish Coalescing-operatoren (??
), om en værdi er null
eller undefined
, og returnerer en anden standardværdi i så fald. Den minder om den ofte anvendte logiske OR-operator (||
), men adskiller sig, da den er specialiseret til null
og undefined
.
Den logiske OR-operator returnerer højre værdi, hvis venstre værdi er falsy
, mens nullish coalescing-operatoren kun returnerer højre værdi, når venstre værdi er null
eller undefined
. Denne funktion gør det muligt at håndtere værdier som 0
og tomme strenge (""
) korrekt.
Grundlæggende syntaks
1let result = value ?? defaultValue;
value
er værdien, der kontrolleres.defaultValue
er den værdi, der returneres, nårvalue
ernull
ellerundefined
.
Eksempler på brug af Nullish Coalescing-operatoren
Det følgende eksempel implementerer en proces til at returnere en standardværdi i tilfælde af null
eller 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"
I denne kode, da name
er null
, returneres værdien defaultName
, "Anonymous"
. Hvis name
er en værdi, der ikke er null
eller undefined
, returneres den værdi.
Forskelle mellem Nullish Coalescing og den logiske OR-operator
Nullish coalescing-operatoren ligner den logiske OR-operator, men har en vigtig forskel. Den logiske OR-operator tjekker for 'falsy'-værdier (false
, 0
, NaN
, ""
, null
, undefined
, osv.), mens nullish coalescing-operatoren kun tjekker for null
og undefined
.
Eksempel på logisk OR-operator:
1let count = 0;
2let defaultCount = 10;
3
4// Since count is falsy (0), defaultCount is returned
5let result = count || defaultCount;
6console.log(result); // 10
Eksempel på Nullish Coalescing-operator:
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
På denne måde bevarer nullish coalescing-operatoren gyldige værdier såsom 0
og tomme strenge (""
) og returnerer kun en standardværdi, når det er nødvendigt. Da den logiske OR-operator behandler disse værdier som falsy
og returnerer standardværdien, er det vigtigt at vælge den passende operator afhængigt af brugstilfældet.
Eksempel, når den bruges i kombination:
Nullish coalescing-operatoren kan også kombineres med andre logiske operatorer, men forsigtighed er nødvendig i sådanne tilfælde.
1let a = null;
2let b = 0;
3let c = false;
4
5// SyntaxError
6let result = a ?? b || c;
- For eksempel, når den bruges sammen med den logiske OR-operator (
||
) eller den logiske AND-operator (&&
), bør parenteser anvendes for at tydeliggøre rækkefølgen af operationer.
1let a = null;
2let b = 0;
3let c = false;
4
5let result = (a ?? b) || c;
6console.log(result); // false
- I dette eksempel evalueres
a ?? b
først, og daa
ernull
, returneresb
. Derefter evalueresb || c
, og dab
er falsk, returneresc
til sidst.
Tilfælde, hvor nullish coalescing-operatoren er nyttig
Følgende er tilfælde, hvor nullish coalescing-operatoren er nyttig.
- Standardværdier for formularer Dette kan bruges i scenarier, hvor en standardværdi er indstillet for formularens inputfelter, når brugeren ikke indtaster noget.
1let userAge = null;
2let defaultAge = 18;
3let age = userAge ?? defaultAge;
4console.log(age); // 18
- Håndtering af API-svar
Fallback-behandling kan udføres, når værdien er
null
ellerundefined
i svar fra API'en.
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"
Sammendrag
Nullish coalescing-operatoren (??
) er meget nyttig til initialisering af data og håndtering af API-responser, da den returnerer en standardværdi, når den støder på null
eller undefined
. Især er det et bedre valg end den traditionelle logiske OR-operator (||
), når du vil håndtere falsy
-værdier som 0
eller tomme strenge korrekt.
Om Nullish Coalescing Assignment Operator (??=)
Oversigt
I JavaScript er Nullish Coalescing Assignment Operator ??=
introduceret for effektivt at tildele en ny værdi til variabler, der har værdien null
eller undefined
. Denne operator er en praktisk genvej til kun at tildele en værdi til en variabel, hvis en specifik værdi er null
eller undefined
.
Grundlæggende Brug
Nullish coalescing-tilknytningsoperatoren fungerer som følger:.
- Hvis en variabel er
null
ellerundefined
, tildeles værdien på højresiden. - Hvis variablen hverken er
null
ellerundefined
, gør den ingenting og bevarer den aktuelle værdi.
Syntaks
Den grundlæggende syntaks for nullish coalescing-tilknytningsoperatoren er som følger:.
1x ??= y;
y
tildeles tilx
, hvisx
ernull
ellerundefined
.- Hvis
x
allerede har en værdi (ikkenull
ellerundefined
), forbliverx
's værdi uændret.
Eksempel
Lad os se på et grundlæggende eksempel med den nullish-coalescing tildelingsoperator.
1let userName = null;
2let defaultName = "Guest";
3
4// Since userName is null, defaultName is assigned
5userName ??= defaultName;
6
7console.log(userName); // "Guest"
- I denne kode, da
userName
ernull
, tildeles værdien afdefaultName
.
Her er et eksempel, hvor værdien hverken er null
eller undefined
.
1let userName = "Alice";
2let defaultName = "Guest";
3
4// Since userName is "Alice", nothing is assigned
5userName ??= defaultName;
6
7console.log(userName); // "Alice"
- I dette tilfælde, da
"Alice"
allerede er angivet foruserName
, foretages ingen tildeling.
Sammenligning med andre tildelingsoperatorer
JavaScript har også flere andre tildelingsoperatorer. Især er forskellen med den logiske OR-tildelingsoperator (||=
) vigtig.
1let value = 0;
2value ||= 10; // Assign 10 if value is falsy
3console.log(value); // 10
Den logiske OR-tilknytningsoperator tildeler en værdi, selv når den støder på falsy
-værdier som false
, 0
eller en tom streng (""
), mens nullish coalescing-tilknytningsoperatoren kun fungerer, når værdien er null
eller undefined
.
1let value = 0;
2value ??= 10;
3// Since value is neither null nor undefined,
4// nothing is assigned
5console.log(value); // 0
Da nullish coalescing-tilknytningsoperatoren kun fungerer på null
eller undefined
, er den meget nyttig, når du vil bevare værdier som 0
eller false
.
Anvendelser i den virkelige verden
Et praktisk eksempel på brug af null coalescing-tilordningsoperatoren kan være som følger:.
-
Indstilling af standardværdier
Det er nyttigt til at indstille standardværdier, når brugerinput eller API-svar kan være
null
ellerundefined
.
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"
-
Håndtering af valgfri parametre
Det kan også bruges til at udføre standardhandlinger, når funktionsargumenter ikke er angivet.
1function greet(name) {
2 name ??= "Guest";
3 console.log(`Hello, ${name}!`);
4}
5
6greet(); // "Hello, Guest!"
7greet("Alice"); // "Hello, Alice!"
Sammendrag
Nullish coalescing-tilknytningsoperatoren (??=
) tildeler kun en værdi, når venstreværdien er null
eller undefined
, hvilket gør koden mere kortfattet og hjælper med at forhindre utilsigtede tildelinger. Især når man arbejder med "falsy" værdier som 0
eller false
, kan det være mere hensigtsmæssigt end den traditionelle logiske OR-operator (||=
).
Ved at bruge denne operator kan du skabe mere robust og læsbar kode.
Du kan følge med i ovenstående artikel ved hjælp af Visual Studio Code på vores YouTube-kanal. Husk også at tjekke YouTube-kanalen.