pro zaΦßteΦnφky
Kdo znß funkce z jin²ch programovacφch jazyk∙, ten nebude p°φli╣ zaskoΦen jejich zßpisem v JavaScriptu. Pokusφm se to tedy vysv∞tlit zejmΘna t∞m, kte°φ funkce nikdy nepou╛φvali.
ProΦ vznikly funkce: v praxi se velmi Φasto opakujφ stejnΘ sekvence p°φkaz∙. Funkce umo╛≥ujφ zabalit takovou sekvenci a pojmenovat ji. Potom se ta dlouhß sekvence nemusφ vypisovat, ale staΦφ pou╛φt jmΘno tΘ funkce.
P°edstavte si, ╛e pφ╣ete n∞jakΘ modernφ licenΦnφ ujednßnφ. Tam se ka╛dou chvφli mal²m pφsmem opakuje uji╣t∞nφ jako ╛e v²robce za nic neruΦφ:
<p><small><small>V²robce neruΦφ za ╣kody, vzniklΘ
pou╛itφm v²robku. V²robek smφ instalovat pouze osoba pov∞°enß ve smyslu
zßkona 2/1895 sb. P°i neodbornΘ instalaci v²robku nep°ebφrß v²robce
odpov∞dnost v∙bec za nic.</small></small>
Tento odstavec by se dal vklßdat Javascriptem. (V praxi by se to asi JavaScriptem ned∞lalo, ale dejme tomu.) Skript pro vlo╛enφ k≤du do textu by vypadal n∞jak takto:
<script>
document.write("<p><small><small>V²robce neruΦφ ...
atd.");
</script>
Proto╛e se to v textu Φasto opakuje, tak╛e aby se to ve skriptu nemuselo vypisovat poka╛dΘ, je dobrΘ vklßdat to funkcφ. Nejprve se nadeklaruje funkce:
<script>
function nerucime() {
document.write("<p><small><small>V²robce neruΦφ ...
atd.");
}
</script>
Potom staΦφ kdekoliv v textu napsat:
<script>
nerucime();
</script>
a text poznßmky o neruΦenφ se na to mφsto vlo╛φ sßm.
Deklarace funkce zaΦφnß v JavaScriptu vyhrazen²m slovem function, za nφm╛ nßsleduje jmΘno funkce (v tomto p°φkladu nerucime). JmΘno funkce je nßsledovßno dvojicφ zßvorek, v nich╛ mohou b²t parametry. V prvnφm p°φkladu jsem ╛ßdnΘ parametry nepou╛il, p°esto zßvorky nesmφm vynechat. Dßle nßsleduje t∞lo funkce, vlastnφ sekvence p°φkaz∙, kterß je uzav°ena do slo╛en²ch zßvorek. (Slo╛enΘ zßvorky se v JavaScriptu pou╛φvajφ k vymezovßnφ podprogram∙ a logick²ch celk∙ programu.) Symbolickß rekapitulace:
function jmΘno(parametr, parametr2) { p°φkaz;
p°φkaz };
Hlavnφ v²znam funkcφ je v tom, ╛e dokß╛φ zpracovßvat parametry a reagovat na jejich hodnoty.
Dejme tomu, ╛e se v upozorn∞nφ v╛dy musφ napsat jmΘno v²robku, p°iΦem╛ jmΘna v²robk∙ se m∞nφ. Do funkce p°idßm parametr vyrobek:
function nerucime(vyrobek) {
document.write("<p><small><small>V²robce neruΦφ
za ╣kody, vzniklΘ pou╛itφm v²robku ");
document.write(vyrobek);
document.write(". V²robek ");
document.write(vyrobek);
document.write(" smφ instalovat pouze osoba pov∞°enß ve smyslu zßkona
2/1895 sb. P°i neodbornΘ instalaci v²robku ");
document.write(vyrobek);
document.write(" nep°ebφrß v²robce odpov∞dnost v∙bec za nic.</small></small>");
};
Do textu se na mφsto upozorn∞nφ umφstφ:
<script>
nerucime("Parnφ sekaΦka ABX");
</script>
Funguje to tak, ╛e jakmile prohlφ╛eΦ narazφ na funkci "nerucime", tak se podφvß na jejφ deklaraci. Zjistφ, ╛e funkce mß parametr, a tak si do prom∞nnΘ vyrobek naΦte hodnotu "parnφ sekaΦka trßvy ABX" (hodnota je v uvozovkßch, proto╛e je textovß). V²hoda funkce je ta, ╛e se dß volat mnohokrßt s r∙zn²mi v²robky.
<script>
nerucime("AutomatickΘ kle╣t∞ typu B s vysφlaΦkou");
</script>
N∞kterΘ funkce vracejφ hodnotu. Vysv∞tlφm na p°φkladu osmΘ mocniny. Dejme tomu, ╛e pot°ebuji Φasto poΦφtat osmou mocninu n∞jakΘho Φφsla, tak╛e si na to ud∞lßm funkci.
function osmaMocnina(zaklad) {
var x = zaklad * zaklad * zaklad * zaklad * zaklad * zaklad * zaklad * zaklad;
return x;
}
Funkce by ╣la zapsat ·sporn∞j╣φm k≤dem, ale to te∩ nevadφ. D∙le╛itΘ je tam to return x. Funkce vrßtφ hodnotu, kterß je uvedenß za tφm return. Pou╛itφ pak vypadß t°eba n∞jak takhle:
var cislo = 12;
document.write("Osmß mocnina Φφsla " + cislo + " je rovna
");
document.write( osmaMocnina(cislo) );
FunkΦnost funkcφ si m∙╛ete ov∞°it na p°φkladu.