Podstawy JS, cz. 3: Zmienne, obiekty |
3.1 Budowa języka Java Script |
Jak każdy program, skrypt JS składa się z serii poleceń, które są kolejno wykonywane. Jednak w ten sposób nie można opisać bardziej skomplikowanych algorytmów. Dlatego jednym z najważniejszych elementów JS są funkcje. Pozwalają one na zdefiniowanie jakiejś określonej sekwencji czynności, które zostaną wykonane, gdy dana funkcja zostanie wywołana. Można przy tym stosować konstrukcje warunkowe (jeśli coś to coś), pętle itp. Warto tu zauważyć, że poszczególne wątki programu są wykonywane równolegle - jeśli np. odsuniemy w czasie wykonanie jakiejś procedury za pomocą komendy setTimeOut to komputer nie będzie czekał z wykonaniem pozostałych poleceń, jak to miałoby miejsce np. w programie napisanym w Pascalu. I jeszcze jedna ważna sprawa: JS rozróżnia wielkie i małe litery!
[ Powrót na górę ]
|
3.2 Zmienne |
Jak w każdym języku programowania w JS występują zmienne. Podobnie jak w matematyce, zmienna to jakiś ciąg znaków, któremu może być przyporządkowana wartość (chociaż w matematyce dla oznaczania zmiennych stosuje się raczej pojedyncze litery). Wartość tę można zmieniać, można też zmienną operować nawet, jeśli nie ma ona żadnej wartości (choć efekty tego mogą okazać się nieprzewidywalne).
W JS nie deklaruje się zmiennych na początku programu, tak jak w innych językach. Zamiast tego zmienna jest automatycznie uznawana za zdefiniowaną, gdy pierwszy raz zostanie jej przypisana wartość. Nigdzie nie określa się też, jakiego typu jest dana zmienna, więc zmienna znakowa może w dowolnej chwili otrzymać wartość liczbową! Można także odczytać wartość zmiennej nie określonej, tzn. takiej, która jeszcze ani razu nie była używana - uzyskamy wtedy wartość undefined |
3.2.1 Nazwy zmiennych |
Nazwa zmiennej może być dowolna, pod warunkiem, że spełnia ona następujące warunki:
- Nazwa zaczyna się od litery albo znaku podkreślenia "
_ ".
- Nie zawiera spacji.
- Nie jest to słowo zrerezerwowane tzn. takie, które ma już specjalne znaczenie w JS.
Nazwy zmiennych, w odróżnieniu od wartości znakowych, zapisuje się bez cudzysłowów. Należy też pamiętać o tym, że w JS istnieje rozróżnienie pomiędzy dużymi i małymi literami.
Oto jakie rodzaje wartości mogą przyjmować zmienne:
[ Powrót na górę ]
|
3.2.2 Wartość liczbowa |
Po prostu liczba, np. 123 albo 3.14 . Jeśli podajemy liczbę ułamkową, używamy kropki, a nie przecinka jak w języku polskim. Wartości liczbowe mogą też być ujemne: np. -9867665.77
[ Powrót na górę ]
|
3.2.3 Łańcuch znakowy |
Łańcuch znakowy, albo z angielska string to ciąg dowolnych znaków. Nie ma żadnych ograniczeń co do jego zawartości ani długości, ale należy uważać, aby gdzieś w skrypcie nie wpisać np. ciągu "</SCRIPT>" , gdyż zostanie to odczytane jako koniec skryptu! Łańcuchy znakowe muszą zawsze być objęte parą cudzysłowów, np. "Ale fajnie być zmienną!!!" (chyba, że całe wyrażenie jest już w cudzysłowach, np. onClick="wyrażenie" - wtedy nalezy użyć apostrofów ' ' ).
Wewnątrz łańcucha można używać cudzysłowów, ale, ponieważ ten znak służy również do oznaczania początku i końca łańcucha, trzeba go poprzedzić znakiem \ . Dodatkowo, sekwencja \n to znak przejścia do następnej linii. Przykład:
MojString = "Uwielbiam książki!\n\n Szczególnie z serii \"Poczytaj mi mamo\"."
Uwaga! Należy rozróżnić np. 123 od "123" . To pierwsze to liczba, na której można wykonywać działania; to drugie to tylko ciąg znaków. Jeżeli zechcemy połączyć ze sobą liczbę i łańcuch znakowy, otrzymamy łańcuch znakowy. Ale trzeba uważać, aby nie próbować doklejać stringów do liczb - spowoduje to błąd! Można jedynie doklejać liczby do stringów. Tak więc prawidłowy jest zapis:
MojString = "rok " + 1984
Da to wynik "rok 1984" (łańcuch znaków). Ale błędem jest:
MojString = 40 + " rozbójników"
Aby móc dokonać takiego dodawania musimy najpierw zamienić 40 na "40" (liczbę na łańcuch), np. dodając na początku pusty string:
MojString = "" + 40 + " rozbójników"
Otrzymamy wtedy "40 rozbójników" .
Do zamiany w drugą stronę wykorzystujemy funkcje parseInt i parseFloat (dokładny opis w specyfikacjach.)
[ Powrót na górę ]
|
3.2.4 Wartość logiczna |
Wartość logiczna albo Boolowska to prawda albo fałsz. Te wartości w JS nazywają się true i false (bez cudzysłowów). Np. zmiennej jestem_najlepszy należy przyporządkować wartość true :-).
[ Powrót na górę ]
|
3.2.5 Wartość null |
Wartości null możemy użyć, aby zanaczyć, że chwilowo danej zmiennej nie jest przyporządkowana żadna określona wartość. Dla porówania - w Perlu tej wartości odpowiada w przybliżeniu "undef".
[ Powrót na górę ]
|
3.3 Przypisywanie wartości zmiennym |
W JS znakiem przypisania jest "= ". Oznacza on, że dana zmienna właśnie otrzymuje nową wartość. Znak równości w JS to "== " (dwa razy 'równa się'). Dla osób znających Pascala może to być trochę mylące, ale da się do tego przyzwyczaić. Tak więc przypisania mogą wyglądać następująco:
masa_produktu = 5.65;
jednostka_masy = "kg";
opis_produktu = "Świeże mandarynki";
produkt_sprzedany = false;
uwagi = null;
W tym przykładzie po każdej linijce znajduje się średnik. Takie są wymogi JS - kolejne instrukcje odzielane są średnikami (nie umieszcza się średników tylko po blokach określonych klamrami {} , np. po definicja funkcji albo instrukcjach warunkowych.
Przyjęło się dla czytelności kodu definicję zmiennej (czyli przypisanie jej po raz pierwszy wartości) oznaczać słowem kluczowym var :
var nowa_zmienna = null
Ma to jednak też nie tylko estetyczne znaczenie: jeśli "deklarajcę" zmiennej wewnątrz funkcji poprzedzimy słowem var , zmienna ta nie będzie dodtępna dla innych funkcji (dlatego kilka funkcji może przykładowo deklarować i używać zmienną temp albo i bez żadnej kolizji oznaczeń. Jeśli przed pierwszym przypisaniem wartości zmiennej wewnątrz funkcji nie umieścimy słowa var , zostanie utworzona lub zmodyfikowana zmienna globalna i inne funkcje będą mogły odczytać jej wartość.
[ Powrót na górę ]
|
3.4 Obiekty |
Ważną rolę w JS odgrywają obiekty. Można je tworzyć samemu lub korzystać z już gotowych, udostępnianych przez przeglądarkę, a reprezentujących np. elementy dokumentu HTML. Każdy obiekt może mieć pewne własności i metody. Własność obiektu zachowuje się jak zmienna (albo kolejny obiekt), a metoda to nic innego jak funkcja odnosząca się do obiektu. Własności i metody obiektów wywołuje się następująco:
obiekt.własność
obiekt.metoda()
O tworzeniu własnych obiektów będzie jeszcze mowa, ale przyjrzyjmy się, jaki jest z nich pożytek. W poprzednim przykładzie mieliśmy kilka różnych zmiennych odnoszących się do produktu. Możnaby utworzyć obiekt produkt o odpowiednich własnościach i pisać zamiast tego:
produkt.masa = 5.65;
produkt.masa.jednostka = "kg";
produkt.opis = "Już trochę nieświeże mandarynki";
produkt.sprzedany = false;
produkt.uwagi = null;
Albo jeszcze prościej, z użyciem instrukcji with :
with (produkt)
{
masa = 5.65;
masa.jednostka = "kg";
opis = "Już trochę nieświeże mandarynki";
sprzedany = false;
uwagi = null;
}
W JS istnieje bardzo wiele predefiniwanych obiektów i to właśnie ich się najczęściej używa. Najważniejsze są chyba document reprezentujący cały dokument HTML, w którym umieszczony jest skrypt oraz window , czyli okno przeglądarki. Nie będę tu opisywać tych, ani żadnych innych obiektów. Szczegółowe i obszerne specyfikacje JS dostarczają wszystkich potrzebnych informacji na ten temat.
[ Powrót na górę ]
|
|
|
|