İsteğe bağlı değiştirme operatörü, bir özellik değerine ulaşana veya bir hatayla karşılaşana kadar yolda devam eder:
çalışana izin ver = {ilk adı : 'John' ,
Soyadı : 'Doe' ,
Yaş : 3. 4
} ;
konsol. kayıt ( çalışan. adres ? . fermuar ) ;
Aynı özellik değerine isteğe bağlı zincirleme operatörünü kullanmadan erişmeye çalışsaydık, bir hata alırdık:
çalışana izin ver = {
ilk adı : 'John' ,
Soyadı : 'Doe' ,
Yaş : 3. 4
} ;
konsol. kayıt ( çalışan. adres . fermuar ) ;
Yöntem Çağrılarında İsteğe Bağlı Zincirleme
İsteğe bağlı zincirleme, yöntem çağrılarında da çalışır. Bir nesne içinde bir yöntemin var olup olmadığından emin değilseniz, isteğe bağlı zincirlemeyi kullanabilirsiniz. Örnek bir kullanım durumu, kullanıcının cihazına bağlı olarak belirli özellikleri içerebilen veya içermeyebilen bir API'den alınan verilerdir:
çalışana izin ver = {
ilk adı : 'John' ,
Soyadı : 'Doe' ,
Yaş : 3. 4
} ;
konsol. kayıt ( çalışan. yöntem ? . ( ) ) ;
İsteğe bağlı zincirleme olmadan:
çalışana izin ver = {
ilk adı : 'John' ,
Soyadı : 'Doe' ,
Yaş : 3. 4
} ;
konsol. kayıt ( çalışan. yöntem ( ) ) ;
İsteğe bağlı zincirleme operatörü, hataları önlemek için tek bir ifade içinde birden çok kez de kullanılabilir.
Nullish birleştirme operatörü ile isteğe bağlı zincirlemeyi birleştirmek
İsteğe bağlı zincirleme ayrıca ?? özelliğin veya yöntemin mevcut olmaması durumunda varsayılan bir değer sağlamak için operatör:
çalışana izin ver = {ilk adı : 'John' ,
Soyadı : 'Doe' ,
Yaş : 3. 4
} ;
konsol. kayıt ( çalışan. yöntem ? . ( ) ?? 'İşlev Yok' ) ;
Varsayılan değer, bazı işlev çağrıları da olabilir.
İsteğe bağlı zincirleme aşırı kullanımı
Kodun okunabilirliğini ve şıklığını artırmak için isteğe bağlı zincirleme tanıtıldı. Hataların susturulmasına neden olabileceğinden dikkatli kullanılmalıdır. İsteğe bağlı zincirleme operatörünün aşırı kullanımı kodunuzda sorunlara neden olabilir.
Çözüm
İsteğe bağlı zincirleme, JavaScript'in yakın zamanda eklenen bir özelliğidir ve derin iç içe JavaScript nesnelerindeki özelliklere ve yöntemlere, bu yöntemlerin ve özelliklerin varlığı için manuel kontroller koyma konusunda endişelenmenize gerek kalmadan erişmek için kullanılabilir.