Wpis z mikrobloga

Dopiero zacząłem zabawę z #javascript i...trochę mnie wcięło. Sorry za durne pytanie, ale:

dlaczego wynik kodu:

str = "abcdef";
var ll = str.split("");
console.log(ll);
var rr = ll.reverse();
console.log(ll);
console.log(rr);

zwraca:

["a", "b", "c", "d", "e", "f"]
["f", "e", "d", "c", "b", "a"]
["f", "e", "d", "c", "b", "a"]

Chodzi mi konkretnie o drugą wypluta listę.
Przecież ja nie zmieniłem array "ll", tylko stworzyłem nową o nazwie "rr" jako odwrotną do listy "ll".
Do tej pory tylko pisałem w pythonie i albo jeszcze się nie obudziłem i nie widzę jakiejś głupoty, albo to nie działa tak, jak myślałem.

#naukaprogramowania
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@kaktus_paszport: @tomash-pl: Ok, byłem przekonany, że wyrażenie var rr = ... po prostu tworzy nową listę, która będzie wyglądać tak, jak to co jest po prawej stronie równania. Trochę dziwne dla mnie, że tak nie jest, ale myślę po pythonowemu i musze się przestawić.
Dzięki.
  • Odpowiedz
@rbielawski: Tu nie masz prostego przekazywania przez referencję tylko wywołanie metody, równie dobrze mogłaby zwrócić kopię tablicy (jak w przypadku map / filter / reduce / slice itp) więc to stwierdzenie niewiele wnosi, no ale która jak dział to tak jak piszesz - MDN.
  • Odpowiedz