Przejdź do głównej zawartości

W przykładzie z błędem, stała numbers oraz sorted zwróci tą samą tablicę [100, 2, 11, 27].

Sortowanie działa poprawnie, problem leży jednak w mutowaniu oryginalnej tablicy poprzez metodę sort().

Metoda sort(), nie wykonuje kopii tablicy, na której zostanie wykonana. Modyfikuje oryginalną tablicę i zwraca efekt tej modyfikacji.

Po posortowaniu liczb, tablica sorted, na pozycji 0 posiada wartość 1.

Ta wartość jest jednak podmieniona na wartość 100 za pomocą sorted[0] = 100.

Z uwagi na wspomnianą wcześniej cechę działania sort(), kolejnym modyfikacjom tablicy sorted, ulega również tablica numbers.

Dobrze o tym pamiętać, szczególnie, że JavaScript jest tutaj niespójny.

Niektóre metody, takie jak np. slice(), map(), concat(), zwracają kopię oryginalnej tablicy, przez co późniejsze modyfikacje nie dotykają oryginału (nie mutują).

Inne, jak np. push(), reverse(), sort(), modyfikują oryginalną tablice (mutują).