Diabl0
Diabl0
64
  • Najlepsze
  • Wszystkie komentarze
Yahoo_
15
regis3
@TheNaturator: od 10 lat co chwile ktoś odkrywa takie niezrozumiałe dla niego elementy w js (ale w pełni logiczne biorąc pod uwagę zasady panujące w js, w innych językach masz dokładnie to samo + dodatkowo undefined behaviour)
7
Marmite
@Diabl0: Pamiętam jak się śmiałem kiedy to pierwszy raz zobaczyłem, prawie spadłem z dinozaura.
7
regis3
Treść przeznaczona dla osób powyżej 18 roku życia...
3
regis3
@Diabl0: o boze ale smiesznie
2
wolodia
@regis3: Możesz wyjaśnić w jaki sposób string jest logicznym rezultatem operacji dodawania na dwóch tablicach?
1
G.....r
G.....r
@wolodia: "+" to konkatenacja w js, tablice są rzutowane do stringa, a połączenie dwóch pustych stringów to jeden pusty string.

magic.avi
1
regis3
@wolodia: [].toString() + [].toString() (plus to tutaj operator konkatenacji stringow, nie ma tego operatora w tablicach wiec najpierw nastapiła konwersja lhs - czyli goscia po lewej a potem rhs czyli po prawej)

Jest to niezmienne działanie js od niepamiętnych czasów, opisywane w prawie każdej dobrej książce do js jako ciekawostka. Po polsku pisał o tym @Marmite tu: http://strims.pl/s/javascript/t/wxqpxo/aha-js-czyli-marmite-wyjasnia-javascriptowe-dziwactwa-cz-1
1
wolodia
@regis3: Ok, dla mnie po prostu ta reguła jest nienaturalna i zaskakująca.
1
TheNaturator
@Diabl0: o jak skisłem! xD
0
c.....g
c.....g
@Diabl0: na tych widowniach zawsze musi znaleźć się ktoś z debilnym śmiechem
0
zeczny_wonsz
@Diabl0: takie #ruby jak ze mnie programista zarabiający 15k
0
KubusiowyKubus
KubusiowyKubus
@Diabl0: było na wykopie juz :D
0
wolodia
@regis3: @GGrindzior: Moment, to jest ogromna różnica - operator dodawania a konkatenacja stringów. Nie wpadłbym na to, że w JS jest tak a nie inaczej.
0
wolodia
@regis3: Dziwi mnie to i nie widzę absolutnie żadnego związku pomiędzy tamtym przykładem i C. Nie wiem ile modnych obecnie języków definiuje dodawanie jako operacja numeryczna *bądź* łączenie stringów, ale jest to dość zaskakujące (przynajmniej dla mnie). A to jak w językach niższego poziomu interpretuje się dostęp do pamięci w tablicy, to dość standardowa wiedza; może po prostu mam skrzywienie wynikające z tego, że jestem programistą C, nie JS.
0
regis3
@wolodia: jasne, ale konkatenacja czy dodawanie liczb to taki sam przeladowany operator+. Nie bronie js ale w tym konkretnym przypdaku aby zablokować działanie parsera ast należało by dodać wyjątki do niego. Teraz jest to jego naturalne zachowanie. W takim sensie naturalne, że jest wynikiem wszystkich sprecyzowanych wcześniej reguł.
0
h.....r
h.....r
Treść przeznaczona dla osób powyżej 18 roku życia...
0
regis3
@wolodia: Myślę, że dla programisty wynik [] + [] w js a 1[arr] w c są równie nienaturalne i zaskakujące. Oba są jednak poprawne składniowo.
0
a.....a
a.....a
0