Volitelný operátor změny bude pokračovat v cestě, dokud nedosáhne hodnoty vlastnosti nebo nedojde k chybě:
nechat zaměstnance = {jméno : 'John' ,
příjmení : 'Srna' ,
Stáří : 3. 4
} ;
řídicí panel. log ( zaměstnanec. adresa ? . zip ) ;
Pokud bychom se pokusili získat přístup ke stejné hodnotě vlastnosti bez použití volitelného operátoru řetězení, dostali bychom chybu:
nechat zaměstnance = {
jméno : 'John' ,
příjmení : 'Srna' ,
Stáří : 3. 4
} ;
řídicí panel. log ( zaměstnanec. adresa . zip ) ;
Volitelné řetězení na volání metod
Volitelné řetězení funguje také na volání metod. Pokud si nejste jisti, zda metoda v objektu existuje, můžete použít volitelné řetězení. Příkladem použití jsou data získaná z rozhraní API, které může nebo nemusí obsahovat určité funkce v závislosti na zařízení uživatele:
nechat zaměstnance = {
jméno : 'John' ,
příjmení : 'Srna' ,
Stáří : 3. 4
} ;
řídicí panel. log ( zaměstnanec. metoda ? . ( ) ) ;
Bez volitelného řetězení:
nechat zaměstnance = {
jméno : 'John' ,
příjmení : 'Srna' ,
Stáří : 3. 4
} ;
řídicí panel. log ( zaměstnanec. metoda ( ) ) ;
Volitelný operátor řetězení lze také použít vícekrát v rámci jednoho příkazu, aby se předešlo chybám.
Kombinace volitelného řetězení s operátorem Nullish coalescing
Volitelné řetězení lze také spárovat s ?? operátor, který poskytne výchozí hodnotu v případě, že vlastnost nebo metoda neexistuje:
nechat zaměstnance = {jméno : 'John' ,
příjmení : 'Srna' ,
Stáří : 3. 4
} ;
řídicí panel. log ( zaměstnanec. metoda ? . ( ) ?? 'Funkce neexistuje' ) ;
Výchozí hodnotou může být také nějaké volání funkce.
Nadměrné používání volitelného řetězení
Pro zvýšení čitelnosti a elegance kódu bylo zavedeno volitelné řetězení. Měl by být používán opatrně, protože může vést k umlčení chyb. Nadměrné používání volitelného operátoru řetězení může způsobit problémy ve vašem kódu.
Závěr
Volitelné řetězení je nedávno přidaná funkce JavaScriptu, kterou lze použít k přístupu k vlastnostem a metodám v rámci hluboko vnořených objektů JavaScriptu, aniž byste se museli starat o ruční kontrolu existence těchto metod a vlastností.