Den valgfrie skiftende operatøren vil fortsette nedover banen til den når en egenskapsverdi eller får en feil:
la ansatt = {fornavn : 'John' ,
etternavn : 'Doe' ,
Alder : 3. 4
} ;
konsoll. Logg ( ansatt. adresse ? . glidelås ) ;
Hvis vi hadde prøvd å få tilgang til samme eiendomsverdi uten å bruke den valgfrie kjedeoperatoren, ville vi ha mottatt en feilmelding:
la ansatt = {
fornavn : 'John' ,
etternavn : 'Doe' ,
Alder : 3. 4
} ;
konsoll. Logg ( ansatt. adresse . glidelås ) ;
Valgfri kjeding på metodeanrop
Valgfri kjetting fungerer også på metodekall. Du kan bruke valgfri kjetting når du ikke er sikker på om det finnes en metode i et objekt. Et eksempel på bruk er data hentet fra en API som kan inneholde eller ikke inneholde visse funksjoner avhengig av brukerens enhet:
la ansatt = {
fornavn : 'John' ,
etternavn : 'Doe' ,
Alder : 3. 4
} ;
konsoll. Logg ( ansatt. metode ? . ( ) ) ;
Uten valgfri kjetting:
la ansatt = {
fornavn : 'John' ,
etternavn : 'Doe' ,
Alder : 3. 4
} ;
konsoll. Logg ( ansatt. metode ( ) ) ;
Den valgfrie kjedeoperatoren kan også brukes flere ganger i en enkelt setning for å unngå feil.
Kombinerer valgfri kjetting med Nullish koalescerende operatør
Valgfri kjetting kan også sammenkobles med ?? operatør for å oppgi en standardverdi i tilfelle egenskapen eller metoden ikke eksisterer:
la ansatt = {fornavn : 'John' ,
etternavn : 'Doe' ,
Alder : 3. 4
} ;
konsoll. Logg ( ansatt. metode ? . ( ) ?? 'Funksjon eksisterer ikke' ) ;
Standardverdien kan også være et funksjonskall.
Valgfri overforbruk av kjetting
Valgfri kjetting ble introdusert for å øke lesbarheten og elegansen til koden. Det bør brukes med forsiktighet, da det kan føre til at feilene blir dempet. Overbruk av den valgfrie kjedeoperatøren kan forårsake problemer i koden din.
Konklusjon
Valgfri kjetting er en nylig lagt til funksjon i JavaScript som kan brukes til å få tilgang til egenskaper og metoder i dypt nestede JavaScript-objekter uten å måtte bekymre deg for å sette inn manuelle kontroller for eksistensen av disse metodene og egenskapene.