a.b.c.d – jak JavaScript rozwiązuje problem korzystania z zagnieżdżonych obiektów [Optional Chaining]

Czasami zdarza się, że musimy skorzystać z kilku zagnieżdżeń obiektów. Aby ustrzec się błędów wykonania, należy sprawdzić czy każdy zagnieżdżony obiekt istnieje:

if(!!a && !!a.b && !!a.b.c && !!a.b.c.d){
   console.log(a.b.c.d);
}

Bardziej zwięzłe rozwiązanie – Optional Chaining

Dzięki rozwiązniu Optional Chaining, możliwe jest korzystanie z zagnieżdżonych obiektów w łatwy sposób – nie ma potrzeby sprawdzania czy kolejne zagnieżdżenia istnieją. Jeśli któreś z zagnieżdżeń nie istnieje (jest równe null lub undefined) to całość zwróci wartość undefined. Aby skorzystać z Optional Chaining należy oprócz kropki użyć dodatkowo znaku zapytania:

Operator lewostronny

Warto tutaj wspomnieć, że jest to operator lewostronny – sprawdza czy wartość po jego lewej stronie jest różna od null i różna od undefined. Aczkolwiek wartość po prawej stronie też musi istnieć:

PROPERTY_CHECKED?.PROPERTY_OF_PROPERTY_CHECKED

Poprawne:
a?.b
Niepoprawne:
a?.b?

Optional Chaining w wywoływaniu metod

Dodatkowo Optional Chaining można wykorzystać przy wywoływaniu metod:


W takiej sytuacji operator sprawdza czy metoda run istnieje w obiekcie obj. Jeśli tak nie jest to standardowo zwracany jest undefined.

ES2020

Funkcjonalność ta została wprowadzona w EcmaScript 2020.

Warto zajrzeć

1. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining

Pozostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *