Funkce v Javascriptu

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. 

⌐φlen² p°φklad

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.

Syntaxe deklarace

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 };

Parametry

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>

V²slednß hodnota

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.