Funkcie

Funkcie si môžeme predstaviť ako pomenované bloky kódu, ktorých spúšťanie kontrolujeme podľa potreby zavolaním ich mena. Môžu byť preddefinované (napríklad funkcia write() objektu document, ktorú sme už niekoľko krát použili) alebo si ich môžeme vytvárať podľa našich potrieb. Funkcie môžu no nemusia mať parametre, ktoré sa im odovzdávajú pri volaní funkcie. Parametre slúžia na prenos dát do tela funkcie, aby s nimi funkcia mohla pracovať.

Vytvorenie vlastnej funkcie a príkaz return

Parametre môžeme funkciám odovzdávať hodnotou, to znamená že ako parameter uvedieme konkrétnu hodnotu (napr. 4, “ahoj”, premenna1). V tomto prípade sa vytvorí kópia tejto hodnoty, a pôvodná premenná sa ani v prípade zmeny tejto hodnoty vo vnútri volanej funkcie nezmení. Druhý spôsob je odovzdať parametre odkazom, ak pred premennú vložíme znak &. Tým pošleme do tela funkcie len odkaz na danú premennú a teda všetky operácie sa vykonávajú s pôvodnou premennou. To je výhodné, ak potrebujeme v nejakej funkcii zmeniť obsah nejakej premennej, alebo je premenná príliš veľká a jej kopírovanie by bolo neefektívne. Volanie funkcie môžeme vložiť kamkoľvek do kódu javascriptu, napríklad aj do inej funkcie. Špeciálny prípad volanie funkcie z inej funkcie je, ak funkcia volá samu seba (rekurzia). Ak má funkcia vrátit nejakú hodnotu použijeme príkaz return za ktorým zapíšeme premennú alebo hodnotu, ktorú chceme vrátiť späť do volajúceho programu.

Syntax:

funcion názov ([parameter 1], [parameter 2],…[parameter n]){

príkazy

}

Príklad na funkciu bez parametra:

function mojafunkcia() {
var a = 4;
var b = 5;
document.write(“a + b = “+ (a+b));
}

// funkciu zavolame takto: mojafunkcia();

Príklad na funkciu s parametrom:

function mojafunkcia(a, b) {
document.write(“a + b = “+ (a+b));
}

// funkciu zavolame takto: mojafunkcia(4, 5);

Príklad na použitie príkazu return vo funkcii:

function mojafunkcia(a, b) {
return a + b;
}

// funkciu zavolame takto: document.write(mojafunkcia(4, 5));
// alebo takto: var c = mojafunkcia(4, 5); – vysledok sa ulozi do inej premennej

Príklad na rekurziu funkcie:

function faktorial(n) {
if(n==0) return 1;
else return n*faktorial(n-1);
}

// volanie: nfakt = faktorial(5);

Objekt Function

Objekt Function slúži na definovanie funkcií. Vytvára funkcie a ukladá ich do premennej. Jeho konštruktor obsahuje zoznam názvov parametrov definovanej funkcie v úvodzovkách a ako posledný parameter je reťazec s telom funkcie. Volanie sa potom uskutočňuje napísaním názvu premennej nasledovanej zátvorkami s parametrami.

Syntax:

var nazov_funkcie = new Function(“parameter1″,”parameter2″[,"parameter3",...],”telo funkcie”);

Príklad:

var novafunkcia = new Function(“a”,”b”,”return a + b”);
document.write(“4 + 5 = ” + novafunkcia(4,5));

Vlastnosti objektu Function:

funguje len ak sú volané vo vnútri tela funkcie, inak vrátia null, okrem arity, ktorá vracia počet argumentov definovaný v hlavičke funkcie

arguments – pole, ktoré obsahuje parametre definovanej funkcie
arguments.callee – obsahuje telo definovanej funckie
arguments.caller – obsahuje názov funkcie, z ktorej bola vykonávaná funkcia zavolaná
arguments.length – obsahuje počet parametrov odovzdaných funkcii
arity – počet praramtrov zadefinovaný vo funkcii
constuctor – poskytuje funkciu, ktorá vytvorí objekt
length – obsahuje funkciou predpokladaný počet argumentov

Metódy objektu Function: toString – vypíše vám zdrojový kód vašej funkcie

Syntax:

Object.toString()

Operátor function

Operátor function nám umožnuje definovat funkciu bez názvu.

Syntax:

var premenná = function([parameter 1], [parameter 2],…[parameter n]){príkazy}

Príklad:

var prem = function(a,b) {return a * b;}
// volanie var c = prem(4,5);

this

kľúčové slovo this nám určuje odkaz na aktuálny objekt, v ktorom sa nachádza vykonávaný javascript

Príklad na použitie slova this:

<script language=”javascript” type=”text/javascript”>
function vypisid(tid) {
alert(tid);
}
</script>
<div id=”mojdiv” onClick=”vypisid(this.id)”>toto je v dive1</div>
<div id=”mojdiv2″ onClick=”vypisid(this.id)”>toto je v dive2</div>

Globálne funkcie

Globálne funkcie sú funkcie, ktoré môžeme volať hocikde v zdrojovom kóde bez nutnosti ich definovať alebo vytvárať nejaké objekty. Sú totiž štandardne definované v javascripte.

Funkcia Popis Syntax:
decodeURI() - dekóduje znaky zakódované v adrese na znaky ASCII (napr.: %20 na znak medzera) decodeURI(“ASCII znaky”)
decodeURIComponent() - funguje rovnako ako decodeURI, ale pracuje len s časťami URI decodeURIComponent(“ASCII znaky”)
encodeURI() - opak decodeURI, nekóduje znaky ;/:@&=+$,-_.!~*’()#, pretože sú už považované za štandardné encodeURI(“text”)
encodeURIComponent() - opak decodeURIComponent encodeURIComponent(“text”)
escape() - zakóduje reťazec na kódovanie URI, konvertuje takmer všetky nealfanumerické znaky, zakóduje viac ako modernejšie endcodeURI escape(“text”)
eval() - vyhodnotí výraz javascriptu dodaný ako parameter eval(“kód javascriptu”)
isFinite() - funkcia vracia true, ak je parameter mimo povoleného rozsahu maxima a minima povolených hodnôt isFinite(9999999999999999)
isNaN() - vracia true, ak parameter nie je číslo, inak false
Number() - konvertuje reťazec dodaný ako parameter na číslo (celé alebo desatinné) Number(retazec)
parseFloat() - konvertuje reťazec na desatinné číslo parseFloat(retazec)
parseInt() - konvertuje reťazec na celé číslo, môže tiež prijímať voliteľný parameter určujúci základ vráteného čísla parseInt(retazec [, zaklad])
toString() - prevedie Objekt na reťazec, najlepšie ako sa dá, tiež môže prijímať parameter určujúci základ toString([zaklad])
unescape() - opak escape unescape(“retazec”)
unwatch() - oznamuje externému ladiacemu programu, aby nepokračoval v sledovaní premenných unwatch(vlastnost)
watch() - dáva príkaz externému ladiacemu programu, aby sledoval premenné watch(vlastnost, obsluha_ladenia)