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:
var a = 4;
var b = 5;
document.write(“a + b = “+ (a+b));
}
// funkciu zavolame takto: mojafunkcia();
Príklad na funkciu s parametrom:
document.write(“a + b = “+ (a+b));
}
// funkciu zavolame takto: mojafunkcia(4, 5);
Príklad na použitie príkazu return vo funkcii:
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:
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:
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:
// 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:
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) |