[ Pobierz całość w formacie PDF ]
RozdzIał 1. f& Podstawy47
a korzystamy z języka programowania, który stosuje ścisłą kontrolę typów, komputer
nie będzie potrafił określić, jaką czynność ma wykonać. Większość konwencjonalnych
języków programowania, takich jak C lub C++, to języki o ścisłej kontroli typów.
Język JavaScript określić można jako język o dynamicznej kontroli typów. Ponadto
JavaScript jest językiem o słabej kontroli typów. Jak można się domyślić, podczas wpro-
wadzania elementu w skrypcie JavaScript nie musimy deklarować jego typu. Inną cechą
języków o dynamicznej kontroli typów danych jest fakt, iż można w nich zmieniać typy
w czasie wykonywania (od momentu uruchomienia skryptu do jego zakończenia).
Nie oznacza to jednak, że możemy zignorować typy danych. Po prostu JavaScript jest
bardziej elastyczny od niektórych innych języków. Jeżeli nie będziemy dokładnie wie-
dzieć, w jaki sposób dane interpretowane są w języku JavaScript, to w dalszym ciągu
możemy uzyskiwać nieoczekiwane wyniki. Na przykład zapis
będzie zinterpretowany przez JavaScript jako liczba , natomiast
interpreter języka JavaScript przekształci na ciąg . Z dalszej części tego rozdziału
dowiemy siÄ™, dlaczego tak siÄ™ dzieje.
Liczby
W kompletnych językach programowania, takich jak Java czy C++, w zależności od
rozmiaru oraz charakterystycznych cech, istnieje kilka typów danych reprezentujących
liczby. Program przydziela określoną ilość pamięci, zależną od typu danych.
W języku JavaScript położono nacisk na łatwość pisania kodu. Z tego powodu różne
rodzaje liczb nie są rozróżniane. Dzięki temu jedno ze zródeł możliwych błędów ko-
dowania zostało wykluczone.
W języku JavaScript liczby mogą być interpretowane jako całkowite (np. liczba 10)
lub zmiennoprzecinkowe (liczby z częścią ułamkową, np. 1,55). Z cała pewnością
niezwykle wygodne jest to, że w języku JavaScript liczby w większości traktowane są
jako zmiennoprzecinkowe, zatem nie musimy martwić się typami liczbowymi. Ponie-
waż aplikacje napisane w JavaScript są zazwyczaj niewielkie, różnica w wydajności
jest niezauważalna.
Język JavaScript obsługuje dodatnie i ujemne liczby w zakresie od 21024 do 21024
(co w przybliżeniu odpowiada zakresowi od 10307 do 10307).
Oprócz liczb dziesiętnych (o podstawie 10), w języku JavaScript obsługiwane są także
liczby ósemkowe (o podstawie 8) oraz szesnastkowe (o podstawie 16). Liczby te mogą
przydać się na przykład do obsługi kolorów obiektów, z tego względu, iż w językach
HTML oraz XHTML kolory powszechnie przedstawia siÄ™ w postaci szesnastkowej.
Jeżeli nie określimy jawnie, że wprowadzana liczba jest liczbą ósemkową lub szesnastko-
wą, to język JavaScript będzie ją interpretował jako liczbę dziesiętną. Aby oznaczyć liczbę
jako ósemkową, wystarczy rozpocząć ją od cyfry 0. Aby oznaczyć liczbę szesnastkową,
48 JavaScrIpt dIa każdego f& Część I
należy rozpocząć liczbę od cyfry 0 oraz znaku "x". Zwróćmy uwagę na to, że pomimo iż
można wprowadzać do przetwarzania liczby ósemkowe i szesnastkowe, to w dalszym
ciągu uzyskany wynik będzie miał postać liczby dziesiętnej. Na przykład następujący kod:
zgodnie z naszymi oczekiwaniami wyświetli liczbę . Natomiast kod:
wyświetli liczbę . Dzieje się tak dlatego, że ósemkowa liczba 10 odpowiada dzie-
siętnej liczbie 8, a 8+8 daje wynik 16 (pamiętajmy, że uzyskany wynik jest w postaci
dziesiętnej). Z tych samych powodów kolejny kod, w którym dodajemy szesnastkową
liczbę 10 do szesnastkowej liczby 10, spowoduje wyświetlenie w wyniku liczby 32.
Za każdym razem, kiedy pobieramy od użytkownika liczby dziesiętne, musimy pa-
miętać o obcinaniu wiodących zer. W innym przypadku liczby te będą interpretowane
jako ósemkowe.
Istnieją trzy specjalne wartości liczbowe. Są to:
Wynik równy nieskończoności dodatniej ( ) lub ujemnej ) możemy
uzyskać w dwóch przypadkach: jeżeli liczba przekroczy maksymalną wartość obsłu-
giwaną przez JavaScript lub jeżeli spróbujemy podzielić liczbę przez zero. W przy-
padku dzielenia przez zero, wynik nieskończoność ( ) uzyskamy, jeżeli dzielnik
był liczbą dodatnią, natomiast minus nieskończoność ( ), jeżeli dzielnik był
liczbÄ… ujemnÄ….
Wartość jest skrótem od Not a Number to nie jest liczba . Wartość tę uzyskamy
w przypadku, gdy wykonamy niewłaściwe działanie z liczbą, takie jak podzielenie jej
przez ciąg znaków. Na przykład, kiedy spróbujemy podzielić przez ciąg :
w wyniku tego działania uzyskamy .
Boolean
W czasie pisania skryptów często będziemy podejmować decyzje co do tego, czy ja-
kieś działanie ma być wykonywane, czy też nie. Załóżmy na przykład, że mamy stronę
WWW, na której wypełniamy formularz online, służący do wysłania wiadomości e-mail.
Zanim użytkownik prześle formularz, chcemy sprawdzić, czy wprowadzony adres e-mail
jest poprawny. Na razie nie przejmujmy się skryptem służącym do wykonania tego
sprawdzenia (opracujemy go w dalszej części książki). Wynikiem testu będzie wartość
tak jest to poprawny adres e-mail i wtedy wiadomość będzie wysłana lub nie
nie jest to poprawny adres e-mail ; wówczas poprosimy o ponowne wprowadzenie
poprawnego adresu.
RozdzIał 1. f& Podstawy49
W takim przypadku poszukujemy wartości lub . Sytuacja ta zdarza się
w programowaniu tak często, że ze względu na nią wymyślono typ danych Boolean.
Dane typu Boolean mogą przyjmować jedną z dwóch wartości: lub . Nie
ma takich wartości, jak: chyba , być może czy prawdopodobnie . JavaScript po-
dejmuje decyzje na podstawie wartości tak lub nie , na zasadach logiki boolean
(zero - jedynkowej).
Ciągi znaków
Bardziej oczywistym typem danych, który będziemy wykorzystywać w naszych skryp-
tach są dane typu (ciągi znaków). Sam kod JavaScript jest zapisany jako tekst,
zatem bez mechanizmów służących do rozróżnienia, które teksty są kodem, a które
ciągami znaków, mogłoby dojść do niejednoznacznych sytuacji. W celu rozwiązania
tego problemu, do oznaczenia, że wiersz lub ciąg znaków nie jest kodem, stosuje się
cudzysłowy lub apostrofy. Dzięki temu interpreter języka JavaScript traktuje tekst oto-
czony cudzysłowami lub apostrofami jako ciąg znaków, a nie jako kod.
Dane, które mają być interpretowane jako ciąg powiązanych ze sobą znaków określa
się mianem ciąg znaków albo łańcuch znaków. W łańcuchach znaków możemy zapi-
sywać nie tylko litery alfabetu, ale także inne znaki. Wystarczy ująć je w cudzysłów
bÄ…dz apostrof.
W języku JavaScript do oznaczenia ciągów znaków możemy użyć zarówno cudzysło-
wów, jak i apostrofów. Zatem ciągi oraz
, to równoznaczne sposoby oznaczania danych typu . Musimy
jednak zwrócić uwagę na to, aby nie dopuścić do sytuacji, w której początek ciągu
znaków oznaczamy jednym rodzajem znaku, np. apostrofem, a koniec innym, np. cu-
dzysłowem. Jeżeli zapiszemy lub ,
to takie zapisy spowodują powstanie błędu. Zapamiętajmy więc, że do oznaczenia począt-
ku i końca ciągu znaków musimy użyć tego samego znaku (apostrofu lub cudzysłowu).
Możemy pomyśleć, że skoro do oznaczenia początku i końca ciągu znaków można użyć
zarówno apostrofu, jak i cudzysłowu, zatem nie powinno mieć znaczenia, czy rozpo-
czynamy ciąg znaków jednym z nich, a kończymy innym. Jeżeli jednak chwilę się nad
tym zastanowimy, dojdziemy do wniosku, że w takim przypadku niemożliwe byłoby
[ Pobierz całość w formacie PDF ]