Przejdź do głównej zawartości

Bug #043

🪲 Znajdź buga

const object = {}
object?.property = "value";

console.log(object)

Chcemy dodać własność do obiektu. Zależy nam jednak na obsłużeniu sytuacji, w której obiekt jest niezdefiniowany, lub zamiast obiektu, zwracana jest wartość null.

Jak zadziała powyższy kod? Co zostanie zalogowane do konsoli?

🧪 Rozwiązanie

const object = {}
if (object) {
object.property = "value"
}

console.log(object)

Operator opcjonalnego łańcuchowania ?. działa poprawnie przy odczycie własności obiektów.

W przykładzie z błędem użyliśmy go do przypisania wartości, a w takim kontekście nie może on zostać użyty. Konsola zaloguje więc błąd Invalid left-hand side in assignment.

Operacja przypisania nie zostanie zrealizowana ze względu na błąd składniowy po lewej stronie operatora przypisania =.

Używanie ?. zapobiega wystąpieniu błędu krytycznego Cannot read properties of undefined w sytuacji gdy obiekt, z którego chcemy odczytać wartość jest niezdefiniowany lub jest nullem.

Gdy chcemy przypisać własność do obiektu, ale nie jesteśmy pewni czy obiekt istnieje, rozsądnie będzie użyć instrukcji warunkowej if.

🎢 Plac zabaw

Otwórz edytor w nowym oknie

📑 Linki

❤️ Podobają Ci się bugi JS?

Podziel się linkiem ze znajomymi:
https://codisity.pl/100-bugow-js