ID: 2926 OOP - Podstawy Łatwe

Źródło: Arkusze CKE

Co zostanie wypisane w konsoli po wykonaniu poniższego kodu JavaScript?
let a = { value: 10 };
let b = a;
b.value = 20;
console.log(a.value);

Warianty odpowiedzi

  1. A

    ReferenceError

  2. B

    20

  3. C

    undefined

  4. D

    10

Wyjaśnienie

Kluczem do zrozumienia tego zadania jest wiedza o tym, jak JavaScript przechowuje obiekty w pamięci.

Gdy tworzysz obiekt i przypisujesz go do zmiennej a, zmienna ta nie zawiera samego obiektu, a jedynie adres (referencję) wskazujący miejsce w pamięci komputera.

Pisząc let b = a, nie tworzysz nowego obiektu, a jedynie kopiujesz ten adres. Od tego momentu zmienne a oraz b wskazują na dokładnie ten sam obiekt w pamięci.

Dlatego modyfikacja b.value zmienia wartość w tym wspólnym obiekcie. Gdy potem sprawdzasz a.value, widzisz zmienioną wartość, czyli 20.

Sprawdź się w praktyce

Rozwiąż pełny test próbny INF.04 albo wylosuj pojedyncze pytanie na szybką powtórkę.

Podobne pytania — OOP - Podstawy