Barcelona
3.01.2012, 12:45:32
Witam, wziąłem się za naukę JS. I na samym początku mam taką małą zagwozdkę.
var zmienna = "37";
zmienna = zmienna + 1 //zwróci "371"
zmienna = zmienna - 1 //zwróci 36
Czemu dodawanie działa inaczej niż odejmowanie ?
Uczę się z tego tutka
doman.art.pl a ten przykład znajduje się w dziale "Konwersja danych"
Crozin
3.01.2012, 12:52:13
W JS operator "+" jest przeciążony dla zmiennych tekstowych i działa jako operator konkatenacji (łączenia) dwóch tekstów. Jeżeli jednym z operandów jest tekst, a drugim liczba, ta ostatnia zamieniana jest na tekst po czym oba są ze sobą łączone.
W przypadku operatora odejmowania zmienna tekstowa konwertowana jest na liczbę i od jej wartości odejmowana jest liczba 1.
Zadeklarowałeś zmienną jako typ string, a znak '+' służy w JS do łączenia stringów, więc do stringa "37" zostaje doczepiony znak '1'.
Jeśli chodzi o 'zmienna = zmienna - 1': ponieważ znak minusa nie jest znakiem specjalnym w JS, interpreter zakłada, że chcesz dokonać operacji odejmowania, dlatego też niejawnie dokonuje konwersji stringa do liczby, co w tym przypadku nie jest problemem. Spróbuj dać 'var zmienna = "jakis_string";' i to już się nie uda.
PS. jeśli chcesz wykonywać operacje arytmetyczne na liczbach zadeklarowanych jako string musisz użyć parseInt() albo parseFloat().