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 null
em.
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