Przejdź do głównej zawartości

W przykładzie z błędem okazuje się, że fruits i favFruits zwrócą ten sam zbiór 3 elementów ["apple", "orange", "banana"].

Powodem takiego efektu jest charakter działania metody push(). Mutuje ona tablicę, tj. zmienia jej oryginalną zawartość.

O funkcjach/metodach, które mają tego typu działanie, mówi się, że generują efekty uboczne. Jest to z reguły sytuacja niepożądana.

Dodatkową pułapką w błędnym kodzie, może być też fakt, że deklarujemy nową stałą newArray, komunikując chęć stworzenia kopi tablicy array.

W JavaScript odwoływanie do tablic odbywa się przez referencję, czyli przez adres, pod którym tablica została zapisana w pamięci RAM.

const newArray = array nie tworzy więc kopi tablicy, a jedynie alias (nową nazwę), wskazując na tą samą tablicę z pamięci.

Aby naprawić przykładowy kod, możemy użyć np. metody concat(), która nie generuje efektów ubocznych i zwraca nową tablicę.

Po takiej zamianie, fruits i favFruits zalogują do konsoli właściwe elementy z dwóch różnych tablic.