Voliteľná zmena operátora bude pokračovať v ceste, kým nedosiahne hodnotu vlastnosti alebo kým nenarazí na chybu:
nechať zamestnanca = {krstné meno : 'John' ,
priezvisko : 'Laň' ,
Vek : 3. 4
} ;
konzola. log ( zamestnanca. adresu ? . PSČ ) ;
Ak by sme sa pokúsili získať prístup k rovnakej hodnote vlastnosti bez použitia voliteľného operátora reťazenia, dostali by sme chybu:
nechať zamestnanca = {
krstné meno : 'John' ,
priezvisko : 'Laň' ,
Vek : 3. 4
} ;
konzola. log ( zamestnanca. adresu . PSČ ) ;
Voliteľné reťazenie pri volaniach metód
Voliteľné reťazenie funguje aj pri volaniach metód. Ak si nie ste istí, či v objekte existuje metóda, môžete použiť voliteľné reťazenie. Príkladom použitia sú údaje získané z rozhrania API, ktoré môže alebo nemusí obsahovať určité funkcie v závislosti od zariadenia používateľa:
nechať zamestnanca = {
krstné meno : 'John' ,
priezvisko : 'Laň' ,
Vek : 3. 4
} ;
konzola. log ( zamestnanca. metóda ? . ( ) ) ;
Bez voliteľného reťazenia:
nechať zamestnanca = {
krstné meno : 'John' ,
priezvisko : 'Laň' ,
Vek : 3. 4
} ;
konzola. log ( zamestnanca. metóda ( ) ) ;
Voliteľný operátor reťazenia možno použiť aj viackrát v rámci jedného príkazu, aby sa predišlo chybám.
Kombinácia voliteľného reťazenia s operátorom Nullish coalescing
Voliteľné reťazenie je možné spárovať aj s ?? operátor na poskytnutie predvolenej hodnoty v prípade, že vlastnosť alebo metóda neexistuje:
nechať zamestnanca = {krstné meno : 'John' ,
priezvisko : 'Laň' ,
Vek : 3. 4
} ;
konzola. log ( zamestnanca. metóda ? . ( ) ?? 'Funkcia neexistuje' ) ;
Predvolenou hodnotou môže byť aj nejaké volanie funkcie.
Nadmerné používanie voliteľného reťazenia
Na zvýšenie čitateľnosti a elegancie kódu bolo zavedené voliteľné reťazenie. Mal by sa používať opatrne, pretože môže viesť k umlčaniu chýb. Nadmerné používanie voliteľného operátora reťazenia môže spôsobiť problémy vo vašom kóde.
Záver
Voliteľné reťazenie je nedávno pridaná funkcia JavaScriptu, ktorú možno použiť na prístup k vlastnostiam a metódam v rámci hlboko vnorených objektov JavaScriptu bez toho, aby ste sa museli obávať manuálneho overovania existencie týchto metód a vlastností.