L'operador de canvi opcional continuarà pel camí fins que assoleixi un valor de propietat o trobi un error:
deixar empleat = {nom : 'Joan' ,
cognom : 'Doe' ,
Edat : 34
} ;
consola. registre ( empleat. adreça ? . cremallera ) ;
Si haguéssim intentat accedir al mateix valor de propietat sense utilitzar l'operador d'encadenament opcional, hauríem rebut un error:
deixar empleat = {
nom : 'Joan' ,
cognom : 'Doe' ,
Edat : 34
} ;
consola. registre ( empleat. adreça . cremallera ) ;
Encadenament opcional en trucades de mètode
L'encadenament opcional també funciona en les trucades de mètodes. Podeu utilitzar l'encadenament opcional quan no esteu segur de si existeix un mètode dins d'un objecte. Un exemple d'ús són les dades que s'obtenen d'una API que poden contenir determinades funcions o no, segons el dispositiu de l'usuari:
deixar empleat = {
nom : 'Joan' ,
cognom : 'Doe' ,
Edat : 34
} ;
consola. registre ( empleat. mètode ? . ( ) ) ;
Sense encadenament opcional:
deixar empleat = {
nom : 'Joan' ,
cognom : 'Doe' ,
Edat : 34
} ;
consola. registre ( empleat. mètode ( ) ) ;
L'operador d'encadenament opcional també es pot utilitzar diverses vegades dins d'una sola instrucció per evitar errors.
Combinant l'encadenament opcional amb l'operador de coalescencia Nullish
L'encadenament opcional també es pot combinar amb el ?? operador per proporcionar un valor per defecte en cas que la propietat o el mètode no existeixi:
deixar empleat = {nom : 'Joan' ,
cognom : 'Doe' ,
Edat : 34
} ;
consola. registre ( empleat. mètode ? . ( ) ?? 'La funció no existeix' ) ;
El valor predeterminat també pot ser una trucada de funció.
Sobreús opcional d'encadenament
Es va introduir l'encadenament opcional per augmentar la llegibilitat i l'elegància del codi. S'ha d'utilitzar amb cura, ja que pot provocar un silenciament d'errors. L'ús excessiu de l'operador d'encadenament opcional pot causar problemes al vostre codi.
Conclusió
L'encadenament opcional és una característica afegida recentment de JavaScript que es pot utilitzar per accedir a propietats i mètodes dins d'objectes JavaScript imbricats profunds sense haver de preocupar-se de fer comprovacions manuals de l'existència d'aquests mètodes i propietats.