Valinnainen muuttuva operaattori jatkaa polkua pitkin, kunnes se saavuttaa ominaisuuden arvon tai kohtaa virheen:
anna työntekijän = {etunimi : 'John' ,
sukunimi : 'Doe' ,
Ikä : 3. 4
} ;
konsoli. Hirsi ( työntekijä. osoite ? . postinumero ) ;
Jos olisimme yrittäneet päästä samaan omaisuuden arvoon ilman valinnaista ketjutusoperaattoria, olisimme saaneet virheilmoituksen:
anna työntekijän = {
etunimi : 'John' ,
sukunimi : 'Doe' ,
Ikä : 3. 4
} ;
konsoli. Hirsi ( työntekijä. osoite . postinumero ) ;
Valinnainen ketjutus menetelmäkutsuissa
Valinnainen ketjutus toimii myös menetelmäkutsuissa. Voit käyttää valinnaista ketjutusta, kun et ole varma, onko objektissa menetelmä. Esimerkki käyttötapauksesta on API:lta haettu data, joka voi sisältää tai ei välttämättä sisältää tiettyjä ominaisuuksia riippuen käyttäjän laitteesta:
anna työntekijän = {
etunimi : 'John' ,
sukunimi : 'Doe' ,
Ikä : 3. 4
} ;
konsoli. Hirsi ( työntekijä. menetelmä ? . ( ) ) ;
Ilman valinnaista ketjutusta:
anna työntekijän = {
etunimi : 'John' ,
sukunimi : 'Doe' ,
Ikä : 3. 4
} ;
konsoli. Hirsi ( työntekijä. menetelmä ( ) ) ;
Valinnaista ketjutusoperaattoria voidaan myös käyttää useita kertoja yhdessä lauseessa virheiden välttämiseksi.
Valinnaisen ketjutuksen yhdistäminen Nullish-liitosoperaattoriin
Valinnainen ketjutus voidaan myös yhdistää ?? operaattori antaa oletusarvon, jos ominaisuutta tai menetelmää ei ole olemassa:
anna työntekijän = {etunimi : 'John' ,
sukunimi : 'Doe' ,
Ikä : 3. 4
} ;
konsoli. Hirsi ( työntekijä. menetelmä ? . ( ) ?? 'Toiminta ei ole olemassa' ) ;
Oletusarvo voi olla myös jokin funktiokutsu.
Valinnainen ketjutuksen liikakäyttö
Valinnainen ketjutus otettiin käyttöön koodin luettavuuden ja eleganssin lisäämiseksi. Sitä tulee käyttää varovasti, koska se voi vaimentaa virheet. Valinnaisen ketjutusoperaattorin liiallinen käyttö voi aiheuttaa ongelmia koodissasi.
Johtopäätös
Valinnainen ketjutus on äskettäin lisätty JavaScript-ominaisuus, jonka avulla voidaan päästä käsiksi syvälle sisäkkäisten JavaScript-objektien ominaisuuksiin ja menetelmiin ilman, että sinun tarvitsee huolehtia kyseisten menetelmien ja ominaisuuksien olemassaolon manuaalisista tarkastuksista.