Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Kociuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
JavaScript. wiczenia
praktyczne. Wydanie II
Autor: Marcin Lis
ISBN: 83-246-0795-1
Format: A5, stron: 160
Przykady na ftp: 52 kB
Wstp
Rozdzia 1. Podstawy
Umieszczanie skryptw w dokumencie
Instrukcja document.write
Formatowanie tekstu
Wywietlenie okna dialogowego
Jeli przegldarka nie obsuguje skryptw
Komentarze
5
9
9
11
13
16
17
18
21
21
23
26
36
43
50
55
59
59
65
87
87
88
105
112
Rozdzia 5. Zdarzenia
Zdarzenia
Zdarzenia onload i onunload
Zdarzenia zwizane z mysz
113
117
123
123
126
129
139
139
142
144
146
148
150
153
155
q
q
q
q
Typ liczbowy
Typ liczbowy suy do reprezentacji liczb, przy czym nie ma wystpujcego w klasycznych jzykach programowania rozrnienia na typy
cakowitoliczbowe i rzeczywiste (zmiennopozycyjne). Liczby zapisywane s za pomoc literaw (inaczej staych napisowych, z ang. string
constant, literal constant) liczbowych. Obowizuj przy tym nastpujce zasady:
q Jeeli cig cyfr nie jest poprzedzony adnym znakiem lub jest
poprzedzony znakiem +, reprezentuje on warto dodatni,
jeeli natomiast jest poprzedzony znakiem , reprezentuje
warto ujemn.
22
Typ acuchowy
Typ acuchowy suy do reprezentacji cigw znakw (napisw).
Cigi te (inaczej stae napisowe) powinny by ujte w znaki cudzysowu, aczkolwiek dopuszczalne jest rwnie wykorzystanie znakw
apostrofu. Przykadowy cig ma posta:
"abcdefg"
23
Typ logiczny
Typ logiczny (boolean) pozwala na okrelenie dwch wartoci logicznych: prawda i fasz. Warto prawda jest w JavaScript reprezentowana przez sowo true, natomiast warto fasz przez sowo false. Wartoci tego typu s uywane przy konstruowaniu wyrae logicznych,
porwnywaniu danych, wskazywaniu czy dana operacja zakoczya
si sukcesem itp.
Typ null
Typ null jest typem specjalnym, reprezentujcym warto pust. Warto ta jest okrelona sowem null.
Typ obiektowy
Typ obiektowy suy do reprezentacji obiektw. Nie ma specjalnego
sowa kluczowego oznaczajcego ten typ. Najczciej wykorzystuje si
obiekty wbudowane oraz udostpniane przez przegldark.
Poznalimy ju typy danych, czas zapozna si ze sposobami deklarowania i wykorzystania zmiennych. S to konstrukcje programistyczne,
ktre pozwalaj nam przechowywa dane. Kada zmienna ma swoj
nazw, ktra j jednoznacznie identyfikuje, oraz charakteryzuje si
typem, ktry okrela, jakie wartoci moe ona przyjmowa. Nazwa
moe zawiera litery, cyfry i znak podkrelenia, nie moe jednak zawiera znakw narodowych (czyli dopuszczalne s jedynie znaki alfabetu aciskiego). Wolno stosowa zarwno wielkie, jak i mae litery,
s te one rozrniane, co oznacza, e przykadowo: liczba i Liczba to
nazwy dwch rnych zmiennych. Nazwa zmiennej nie moe te
zaczyna si od cyfry.
W JavaScript, podobnie jak i w wielu innych skryptowych jzykach programowania, zmiennych nie trzeba jawnie deklarowa przed uyciem,
a kada z nich moe przyjmowa dane z dowolnego typu opisanego
24
w poprzednim podrozdziale. Ponadto typ danych nie jest przypisywany zmiennej na stae i moe si zmienia w trakcie dziaania skryptu.
Utworzenie zmiennej polega na umieszczeniu w kodzie skryptu jej
nazwy (mona j poprzedzi sowem var) i przypisaniu wartoci, schematycznie:
var nazwa_zmiennej = warto;
lub:
nazwa_zmiennej = warto;
2.1
Zadeklaruj dwie zmienne, przypisz im dowolne cigi znakw i wyprowad je na ekran za pomoc funkcji write.
<script type="text/javascript">
<!-- Ukrycie przed przegldarkami nie obsugujcymi JavaScriptu
var zmienna1 = "Mj komputer";
var zmienna2 = 350;
document.write(zmienna1 + " ma dysk o pojemnoci " + zmienna2 + " GB.");
// Koniec kodu JavaScript -->
</script>
25
Rysunek 2.1.
Wywietlenie na
ekranie wartoci
dwch zmiennych
2.2
26
Rysunek 2.2.
Efekt
dziaania kodu
z wiczenia 2.2
Operatory arytmetyczne
Nietrudno si domyli, e operatory z tej grupy su do wykonywania operacji arytmetycznych, czyli dodawania, odejmowania, mnoenia itp. Zostay one zebrane w tabeli 2.1. W tej grupie wystpuj
jednak rwnie operatory inkrementacji (zwikszania) i dekrementacji
(zmniejszania). Operatory *, /, +, -, % s dwuargumentowe, natomiast
++ i -- s jednoargumentowe.
W I C Z E N I E
2.3
27
Przykad
mnoenie
x * y
dzielenie
x / y
dodawanie
x + y
odejmowanie
x - y
x % y
++
inkrementacja (zwikszanie)
x++, ++x
--
dekrementacja (zmniejszanie)
x--, --x
<script type="text/javascript">
<!-- Ukrycie przed przegldarkami nie obsugujcymi JavaScriptu
var pierwszaLiczba = 12;
var drugaLiczba = 5;
var trzeciaLiczba = pierwszaLiczba - drugaLiczba;
document.write("Wynikiem operacji pierwszaLiczba + 5 jest ");
document.write(pierwszaLiczba + 5);
document.write("<br />Wynikiem operacji pierwszaLiczba - drugaLiczba
jest ");
document.write(trzeciaLiczba);
document.write("<br />Wynikiem operacji 2 * d jest ");
document.write(2 * d);
// Koniec kodu JavaScript -->
</script>
28
Rysunek 2.3.
Wynik dziaania
kilku operacji
arytmetycznych
Do operatorw arytmetycznych naley rwnie %, przy czym, jak zostao to zaznaczone w tabeli 2.1, nie oznacza on obliczania procentw,
ale dzielenie modulo, czyli reszt z dzielenia. Przykadowo, dziaanie
10 % 3 da w wyniku 1. Trjka zmieci si bowiem w dziesiciu 3 razy,
pozostawiajc reszt 1 (3 * 3 = 9, 9 + 1 = 10). Podobnie 21 % 8 = 5,
poniewa 2 * 8 = 16, 16 + 5 = 21.
Ciekawym operatorem jest operator inkrementacji, czyli zwikszenia
wartoci. Powoduje on przyrost wartoci zmiennej o jeden. Operator
ten, zapisywany jako ++, moe wystpowa w dwch formach: przyrostkowej bd przedrostkowej. Oznacza to, e jeli mamy zmienn, ktra
nazywa si np. x, forma przedrostkowa bdzie wyglda: ++x, natomiast przyrostkowa: x++. Oba te wyraenia zwiksz warto zmiennej x o jeden, jednak wcale nie s sobie rwnowane. Ot operacja
x++ zwiksza warto zmiennej po jej wykorzystaniu, natomiast ++x
przed jej wykorzystaniem. Takie rozrnienie moe by bardzo pomocne podczas pisania skryptw. Przyjrzyjmy si zatem bliej operatorowi inkrementacji.
W I C Z E N I E
2.4
Operator inkrementacji
29
var y;
/*1*/ document.write(++x);
/*2*/ document.write(" ");
/*3*/ document.write(x++);
/*z*/ document.write(" ");
/*5*/ document.write(x);
/*6*/ document.write(" ");
/*i*/ y = x++;
/*d*/ document.write(y);
/*9*/ document.write(" ");
/*10*/ y = ++x;
/*11*/ document.write(y);
// Koniec kodu JavaScript -->
</script>
30
W I C Z E N I E
2.5
Operator dekrementacji
Wynikiem dziaania skryptu bdzie cig znakw 11 11 10 10 8. W wierszu 1. najpierw jest zmniejszana warto x o 1 (czyli x = 11), a nastpnie ten wynik jest wywietlany. W wierszu 3. najpierw jest wywietlana
aktualna warto x (czyli 11), a nastpnie jest ona zmniejszana o 1 (czyli
x = 10). W wierszu 5. jest wywietlana aktualna warto x, czyli 10.
W wierszu 7. zmiennej y jest przypisywana warto x, a nastpnie
zmienna x jest zmniejszana o 1 (czyli y = 10, x = 9). W wierszu 10.
najpierw jest zmniejszana warto x o 1 (czyli x = 8), a nastpnie warto ta jest przypisywana zmiennej y (czyli y = 8 i x = 8). Na zakoczenie w linii 11. warto y jest wywietlana na ekranie.
31
Opis
Przykad
==
!=
a != b
===
a === b
!==
a !== b
>
a > b
<
a < b
>=
a >= b
<=
a <= b
Operatory bitowe
Operatory bitowe pozwalaj na wykonywanie operacji na poszczeglnych bitach liczb i zostay przedstawione w tabeli 2.3. S to: iloczyn
bitowy (koniunkcja bitowa, operacja AND), suma bitowa (alternatywa
bitowa, operacja OR), negacja bitowa (uzupenienie do jedynki, operacja NOT), suma bitowa modulo 2 (alternatywa bitowa wykluczajca,
rnica symetryczna, operacja XOR) oraz operacje przesuni bitw.
Wszystkie operatory s dwuargumentowe, oprcz operatora bitowej
negacji, ktry jest jednoargumentowy.
32
Wykonywane dziaanie
Przykad
&
a & b
suma bitowa OR
a | b
~a
a ^ b
>>
a >> n
<<
a << n
>>>
a >>> n
Operatory logiczne
Operacje logiczne mog by wykonywane na argumentach, ktre posiadaj warto logiczn: prawda (true) lub fasz (false). Operatory
logiczne zostay przedstawione w tabeli 2.4. Operatory && i || s
dwuargumentowe, natomiast operator ! jest jednoargumentowy.
Tabela 2.4. Operatory logiczne
Operator
Wykonywane dziaanie
Przykad
&&
a && b
||
a || b
!a
Iloczyn logiczny
Wynikiem iloczynu logicznego jest warto true wtedy i tylko wtedy,
kiedy oba argumenty maj warto true. W kadym innym przypadku wynikiem jest false. Obrazuje to tabela 2.5.
Tabela 2.5. Dziaanie iloczynu logicznego
Argument 1
Argument 2
Wynik
true
true
true
true
false
false
false
true
false
false
false
false
33
Suma logiczna
Wynikiem sumy logicznej jest warto false wtedy i tylko wtedy,
kiedy oba argumenty maj warto false. W kadym innym przypadku
wynikiem jest true. Obrazuje to tabela 2.6.
Tabela 2.6. Dziaanie sumy logicznej
Argument 1
Argument 2
Wynik
true
true
true
true
false
true
false
true
true
false
false
false
Negacja logiczna
Operacja logicznej negacji zamienia warto argumentu na przeciwn. Czyli jeli argument mia warto true, bdzie mia warto false,
i odwrotnie, jeli mia warto false, bdzie mia warto true. Obrazuje to tabela 2.7.
Tabela 2.7. Dziaanie negacji logicznej
Argument
Wynik
true
false
false
true
Operatory przypisania
Operatory przypisania s dwuargumentowe i powoduj przypisanie
wartoci argumentu znajdujcego si z prawej strony operatora argumentowi znajdujcemu si z lewej strony. Tak najprostsz operacj
ju poznalimy, odbywa si ona przy wykorzystaniu operatora = (rwna si). Jeli napiszemy liczba = 10, oznacza to, e zmiennej liczba
chcemy przypisa warto 10.
W JavaScripcie istnieje jednak rwnie cay zestaw operatorw czcych operacj przypisania z inn operacj. Przykadowo istnieje operator +=, ktry oznacza: przypisz argumentowi umieszczonemu z lewej
34
tumaczymy jako:
liczba = liczba + 5
Operator
Argument 2
Znaczenie
x = y
+=
x = x + y
-=
x = x y
*=
x = x * y
/=
x = x / y
%=
x = x % y
<<=
x = x << y
>>=
x = x >> y
>>>=
x = x >>> y
&=
x = x & y
|=
x = x | y
^=
x = x ^ y
Pozostae operatory
W JavaScripcie wystpuje jeszcze kilka innych operatorw, ktrych
jednak nie bdziemy omawia. S to m.in. operator indeksowania
tablic, wywoania funkcji, rozdzielania wyrae, tworzenia obiektw
itp. W podrozdziale dotyczcym instrukcji warunkowych zostanie
natomiast omwiony operator warunkowy.
35
Priorytety operatorw
Sama znajomo operatorw to jednak nie wszystko. Niezbdna jest
jeszcze wiedza na temat tego, jaki maj one priorytet, czyli jaka jest
kolejno ich wykonywania. Wiadomo np., e mnoenie jest silniejsze
od dodawania, zatem najpierw mnoymy, potem dodajemy (t kolejno mona zmieni, stosujc nawiasy okrge, dokadnie w taki sam
sposb, w jaki zmienia si kolejno dziaa w matematyce). W JavaScripcie jest podobnie sia kadego operatora jest cile okrelona.
Przedstawia to tabela 2.9. Im wysza pozycja w tabeli, tym wyszy priorytet operatora. Operatory znajdujce si na jednym poziomie (w jednym
wierszu) maj ten sam priorytet1.
Tabela 2.9. Priorytety operatorw
Lp.
Nazwy
Symbole
[], ()
*, /, %
dodawanie, odejmowanie
+, -
rwne, rne
==, !=
iloczyn bitowy
&
10
suma bitowa
11
iloczyn logiczny
&&
12
suma logiczna
||
13
warunkowy
? :
14
operatory przypisania
= += -= *= /= %= &=
^= |= <<= >>= >>>=
15
rozdzielanie wyrae
36
Instrukcja ifelse
Bardzo czsto w programie zachodzi potrzeba sprawdzenia jakiego
warunku i w zalenoci od tego, czy jest on prawdziwy, czy faszywy,
dalszego wykonywania rnych instrukcji. Do takiego sprawdzania
suy wanie instrukcja warunkowa ifelse. Ma ona ogln posta:
if (wyraenie warunkowe){
//instrukcje do wykonania, jeeli warunek jest prawdziwy
}
else{
//instrukcje do wykonania, jeeli warunek jest faszywy
}
W I C Z E N I E
2.6
Wykorzystaj instrukcj warunkow ifelse do stwierdzenia, czy warto zmiennej typu cakowitego jest mniejsza od zera.
<script type="text/javascript">
<!-- Ukrycie przed przegldarkami nie obsugujcymi JavaScriptu
var liczba = -12;
if(liczba > 0){
document.write("Zmienna liczba jest wiksza od 0.");
}
else{
document.write("Zmienna liczba nie jest wiksza od 0.");
}
// Koniec kodu JavaScript -->
</script>
37
Instrukcja ifelse if
Instrukcja ifelse if pozwala na zbadanie wielu warunkw. Ma ona
schematyczn posta:
if (warunek1){
instrukcje1;
}
else if (warunek2){
instrukcje2;
}
else if (warunek3){
..instrukcje3;
}
...
else if (warunekn){
..instrukcjen;
}
else{
..instrukcjem;
}
Co oznacza: jeeli warunek1 jest prawdziwy, to zostan wykonane instrukcje1, w przeciwnym przypadku, jeeli jest prawdziwy warunek2,
to zostan wykonane instrukcje2, w przeciwnym przypadku, jeli
jest prawdziwy warunek3, to zostan wykonane instrukcje3 itd. Jeeli
aden z warunkw nie bdzie prawdziwy, to zostan wykonane instrukcjem. Ostatni blok else jest jednak opcjonalny i nie musi by stosowany.
Taka konstrukcja moe by wykorzystana np. w sytuacji, kiedy chcemy wykona wiele rnych instrukcji w zalenoci od stanu zmiennej.
38
W I C Z E N I E
2.7
Operator warunkowy
Operator warunkowy pozwala w niektrych przypadkach na wygodne zastpienie bloku ifelse. Konstrukcja taka wyglda nastpujco:
(wyraenie warunkowe) ? warto1 : warto2
39
2.8
Instrukcja switch
Instrukcja wyboru switch (nazywana rwnie instrukcj switchcase)
pozwala w wygodny sposb sprawdzi cig warunkw i wykona rne
40
ktr naley rozumie nastpujco: sprawd warto wyraenia wyraenie, jeli wynikiem jest warto1, to wykonaj intrukcje1 i przerwij
wykonywanie bloku switch (instrukcja break). Jeli wynikiem jest warto2, to wykonaj intrukcje2 i przerwij wykonywanie bloku switch,
jeli jest warto3, to wykonaj intrukcje3 i przerwij wykonywanie
bloku switch. Jeli nie zachodzi aden z wymienionych przypadkw,
wykonaj instrukcje4 i zakocz blok switch. Blok default jest jednak
opcjonalny i moe zosta pominity.
atwo zauway, e jest to odpowiednik zoonej instrukcji ifelse
if w postaci:
if(wyraenie == warto1){
instrukcje1;
}
else if(wyraenie == warto2){
instrukcje2;
}
else if(wyraenie == warto3){
instrukcje3;
}
else{
instrukcje4;
}
41
W I C Z E N I E
2.9
42
Na instrukcj break naley zwrci szczegln uwag. Jej przypadkowe pominicie moe doprowadzi do nieoczekiwanych wynikw
i bdw w skrypcie. Aby przekona si, w jaki sposb dziaa instrukcja switch bez instrukcji break, zmodyfikujmy skrypt z wiczenia 2.9.
W I C Z E N I E
2.10
43
Rysunek 2.5.
Wynik pominicia
niezbdnych
instrukcji break
Ptle to wyraenia suce do wykonywania powtarzajcych si czynnoci. Przykadowo gdybymy chcieli 100 razy wypisa na stronie
pewien tekst, to mona by w tym celu uy 100 instrukcji document.write,
ale byoby to niewtpliwie niewygodne rozwizanie. Ptle pozwalaj
na automatyzacj takich czynnoci. W JavaScript mamy do dyspozycji
nastpujce rodzaje ptli:
q for,
q for..in,
q while,
q dowhile.
Ptla for
Ptla typu for ma skadni nastpujc:
for (wyraenie pocztkowe; wyraenie warunkowe; wyraenie modyfikujce){
blok instrukcji
}
44
W I C Z E N I E
2.11
Uyj ptli typu for, aby 10 razy wywietli na ekranie dowolny napis.
<script type="text/javascript">
<!-- Ukrycie przed przegldarkami nie obsugujcymi JavaScriptu
for (var i = 0; i < 10; i++){
document.write("Ptla typu for <br />");
}
// Koniec kodu JavaScript -->
</script>
45
W I C Z E N I E
2.12
2.13
Skoro zaszlimy ju tak daleko w pozbywaniu si wyrae sterujcych, usumy rwnie wyraenie warunkowe. Jest to jak najbardziej
moliwe!
46
W I C Z E N I E
2.14
Umie wyraenie warunkowe i modyfikujce we wntrzu ptli, natomiast wyraenie pocztkowe przenie poza ni.
<script type="text/javascript">
<!-- Ukrycie przed przegldarkami nie obsugujcymi JavaScriptu
var i = 0;
for (; ;){
document.write ("Ptla typu for <br />");
if (i++ >= 9) break;
}
// Koniec kodu JavaScript -->
</script>
2.15
Wywietl na ekranie liczby pomidzy 1 a 20 podzielne przez 2. Skorzystaj z ptli for i instrukcji continue.
<script type="text/javascript">
<!-- Ukrycie przed przegldarkami nie obsugujcymi JavaScriptu
for (var i = 1; i <= 20; i++){
if ((i % 2) != 0)
continue;
47
2.16
48
Ptla forin
Ptla typu forin pozwala na odczytanie wartoci oraz nazw waciwoci obiektw (w tym rwnie tablic). Ma ona schematyczn posta:
for (var nazwa in obiekt){
//instrukcje
}
W takim przypadku we wntrzu ptli pod identyfikator nazwa podstawiane s kolejne waciwoci obiektu obiekt. Przykad jej uycia
zostanie podany w dalszej czci ksiki.
Ptla while
O ile ptla typu for suy zwykle do wykonywania znanej z gry liczby
operacji, to w przypadku ptli while liczba ta z reguy nie jest znana.
Nie jest to jednak obligatoryjny podzia, poniewa obie ptle mona
napisa w taki sposb, aby byy swoimi funkcjonalnymi odpowiednikami. Oglna konstrukcja ptli typu while jest nastpujca:
wsile (wyraenie warunkowe)
{
instrukcje
}
2.17
49
W I C Z E N I E
2.18
Korzystajc z ptli while, napisz skrypt wywietlajcy na ekranie liczby od 1 do 20 niepodzielne przez 2.
<script type="text/javascript">
<!-- Ukrycie przed przegldarkami nie obsugujcymi JavaScriptu
i = 1;
wsile (i <= 20){
if (i % 2 == 0)
document.write (i + " ");
i++;
}
// Koniec kodu JavaScript -->
</script>
Ptla dowhile
Ptla dowhile jest odmian ptli while. Ma ona nastpujc posta:
do{
instrukcje;
}
wsile(warunek);
2.19
50
2.20
W przedstawionej ptli warunek jej kontynuacji jest na pewno faszywy (false), a mimo to na ekranie pojawi si napis. Dzieje si tak dlatego,
e w przypadku tej ptli najpierw s wykonywane instrukcje umieszczone w jej wntrzu, a dopiero potem jest sprawdzany warunek.
Definiowanie funkcji
Funkcje s to wydzielone bloki kodu przeznaczone do wykonywania
okrelonych zada. Schematyczna definicja funkcji ma posta:
function nazwa_funkcji(argumenty_funkcji)
{
51
//kod funkcji
2.21
Utwrz funkcj, ktrej zadaniem bdzie wywietlenie napisu, a nastpnie wywoaj j w kodzie skryptu.
<script type="text/javascript">
<!-- Ukrycie przed przegldarkami nie obsugujcymi JavaScriptu
function wyswietl_napis()
{
document.write("Instrukcja document.write z wntrza funkcji.");
}
wyswietl_napis();
// Koniec kodu JavaScript -->
</script>
52
Argumenty funkcji
Funkcjom mona przekazywa argumenty, czyli wartoci (dane), ktre
mog wpywa na ich zachowanie lub te by przez nie przetwarzane. List argumentw naley umieci w nawiasie okrgym za
nazw funkcji, oddzielajc je od siebie znakami przecinka. A zatem
taka konstrukcja ma schematyczn posta:
funtion nazwa_funkcji(argument1, argument2, ... , argumentN)
{
//instrukcje wntrza funkcji
}
2.22
Napisz funkcj przyjmujc jeden argument i wywietlajc jego warto na ekranie. Wywoaj j z rnymi argumentami.
<script type="text/javascript">
<!-- Ukrycie przed przegldarkami nie obsugujcymi JavaScriptu
function wyswietl_wartosc(wartosc)
{
document.write(wartosc);
}
wyswietl_wartosc("przykadowy napis");
document.write("<br />");
wyswietl_wartosc(10);
document.write("<br />");
wyswietl_wartosc(2z.i);
// Koniec kodu JavaScript -->
</script>
53
Funkcja moe rwnie przyjmowa wicej ni jeden argument i wykonywa na nich operacje.
W I C Z E N I E
2.23
Operacje na argumentach
Skrypt zawiera funkcj o nazwie dodaj, ktra przyjmuje dwa argumenty: wart1 i wart2. W jej wntrzu wykonywana jest operacja dodawania, a jej wynik jest wywietlany na ekranie (wraz z wartociami
obu argumentw). W dalszej czci skryptu funkcja zostaa wywoana
z argumentami 11 i 21, a zatem wynik dziaania skryptu bdzie taki,
jak zaprezentowany na rysunku 2.9.
54
Rysunek 2.9.
Wynik dziaania
funkcji
wykonujcej
dodawanie
argumentw
Jeli wywoamy tego typu funkcj, to w miejscu jej wywoania zostanie wstawiona zwrcona przez ni warto, ktra bdzie moga by
wykorzystana w dalszej czci skryptu. Warto te wiedzie, e uycie samej instrukcji return bez adnych argumentw rwnie powoduje przerwanie dziaania funkcji (nie zwraca ona jednak wtedy adnej
wartoci).
W I C Z E N I E
2.24
55
dziaa nastpujco:
q Najpierw jest wywoywana funkcja dodaj, a zatem
s wykonywane jej instrukcje;
q Nastpnie wynik dziaania funkcji dodaj jest podstawiany
w miejscu jej wywoania. Poniewa w tym przypadku
jest to 32, instrukcja jest traktowana jako wartosc = 32;
q Zmiennej wartosc jest przypisywana warto zwrcona
przez funkcj.
Wynik dziaania skryptu bdzie wic taki sam, jak zostao to przedstawione na rysunku 2.9.
56
q globalna,
q lokalna.
Zasig globalny
Zmienne globalne (o zasigu globalnym) to takie, ktre s widoczne
w kadym miejscu skryptu. Zmienna staje si globaln, jeli jest zdefiniowana poza wntrzami funkcji. Mona si do niej odwoywa
w dowolnym miejscu kodu, rwnie we wntrzach funkcji.
W I C Z E N I E
2.25
W skrypcie zostaa zadeklarowana globalna zmienna liczba o wartoci 124 oraz funkcja func, ktrej zadaniem jest wywietlenie wartoci
wymienionej zmiennej. Poniewa zmienna ma zasig globalny, jest
to dziaanie prawidowe, co pokazuje dalszy kod skryptu, w ktrym
funkcja zostaa wywoana i zostaa rwnie wywietlona warto
zmiennej.
57
Zasig lokalny
Zmienne o zasigu lokalnym s definiowane wewntrz funkcji, a ich
zasig jest ograniczony tylko do wntrza funkcji, w ktrej zostay
zdefiniowane. Prba odwoania w innym miejscu skryptu spowoduje
powstanie bdu.
W I C Z E N I E
2.26
Umie w skrypcie dowoln funkcj i zadeklaruj w niej zmienn. Sprbuj odczyta warto zmiennej zarwno w funkcji, jak i poza ni.
<script type="text/javascript">
<!-- Ukrycie przed przegldarkami nie obsugujcymi JavaScriptu
function func()
{
var liczba = 12z;
document.write("Warto zmiennej w funkcji: " + liczba);
}
func();
document.write("<br />");
document.write("Warto zmiennej poza funkcj: " + liczba);
// Koniec kodu JavaScript -->
</script>
58
Rysunek 2.10.
Odwoanie do
zmiennej lokalnej
spowodowao
wystpienie bdu