Izvēles mainīgais operators turpinās ceļu, līdz sasniegs rekvizīta vērtību vai radīsies kļūda:
ļaut darbiniekam = {vārds : 'Džons' ,
uzvārds : 'Dirzīte' ,
Vecums : 3. 4
} ;
konsole. žurnāls ( darbinieks. adrese ? . rāvējslēdzējs ) ;
Ja mēs būtu mēģinājuši piekļūt tai pašai īpašuma vērtībai, neizmantojot izvēles ķēdes operatoru, mēs būtu saņēmuši kļūdu:
ļaut darbiniekam = {
vārds : 'Džons' ,
uzvārds : 'Dirzīte' ,
Vecums : 3. 4
} ;
konsole. žurnāls ( darbinieks. adrese . rāvējslēdzējs ) ;
Izvēles ķēde uz metožu izsaukumiem
Izvēles ķēde darbojas arī metožu izsaukumos. Ja neesat pārliecināts, vai objektā pastāv kāda metode, varat izmantot neobligāto ķēdi. Lietošanas gadījuma piemērs ir dati, kas iegūti no API, kas var saturēt vai nesatur noteiktas funkcijas atkarībā no lietotāja ierīces.
ļaut darbiniekam = {
vārds : 'Džons' ,
uzvārds : 'Dirzīte' ,
Vecums : 3. 4
} ;
konsole. žurnāls ( darbinieks. metodi ? . ( ) ) ;
Bez izvēles ķēdes:
ļaut darbiniekam = {
vārds : 'Džons' ,
uzvārds : 'Dirzīte' ,
Vecums : 3. 4
} ;
konsole. žurnāls ( darbinieks. metodi ( ) ) ;
Izvēles ķēdes operatoru var izmantot arī vairākas reizes vienā paziņojumā, lai izvairītos no kļūdām.
Papildaprīkojuma ķēdes apvienošana ar Nullish apvienošanas operatoru
Izvēles ķēdes savienojumu var savienot arī ar ?? operatoram, lai nodrošinātu noklusējuma vērtību gadījumā, ja rekvizīts vai metode nepastāv:
ļaut darbiniekam = {vārds : 'Džons' ,
uzvārds : 'Dirzīte' ,
Vecums : 3. 4
} ;
konsole. žurnāls ( darbinieks. metodi ? . ( ) ?? 'Funkcija neeksistē' ) ;
Noklusējuma vērtība var būt arī dažas funkcijas izsaukums.
Izvēles ķēdes pārmērīga izmantošana
Tika ieviesta izvēles ķēde, lai palielinātu koda lasāmību un eleganci. Tas jālieto uzmanīgi, jo tas var izraisīt kļūdu apklusināšanu. Papildu ķēdes operatora pārmērīga izmantošana var radīt problēmas jūsu kodā.
Secinājums
Izvēles ķēde ir nesen pievienota JavaScript funkcija, ko var izmantot, lai piekļūtu rekvizītiem un metodēm dziļi ligzdotos JavaScript objektos, neuztraucoties par šo metožu un rekvizītu esamības manuālu pārbaudi.