A függvények adják a programok vázát. Két részből áll a függvények létrehozása: definíció (maga a függvény) megírása és a függvény behívása a megfelelő helyen (ahol használni szeretnénk). Általános szerkezet:
// fuggveny letrehozasa parameterek nelkul
function fuggvenyNeve1() {
// fuggveny definicioja
}
// fuggveny letrehozasa parameterekkel
function fuggvenyNeve2(parameter1, parameter2) {
// fuggveny definicioja a parameterek hasznalatavals
}
// az elso fuggveny behivasa
fuggvenyNeve1();
// a masodik fuggveny behivasa
var param1 = 1.0;
var param2 = 2.0;
fuggvenyNeve2(param1, param2);
A függvények használatának bemutatása
Az elso fuggvenyunk
Látható, hogy a függvények annyiszor hajtódnak végre, ahányszor behívjuk őket. Ez adja felhasználásuk értelmét: többször használandó, jól elkülöníthető részfolyamatokat (algoritumusokat) implementálunk függvényekben.
Egy függvényt bárhol lehet definiálni a script részen belül, de meghívni csak a függvény definiálása után lehet, akár másik script részből is. Lássunk erre egy példát:
Az elso fuggvenyunk
Természetesen akárhány függvény definiálható és ezek akárhányszor behívhatók:
Az elso fuggvenyunk
Az is természetes, hogy egy függvény másik függvényből is hívahtó:
Az elso fuggvenyunk
A függvények túlterhelése azt jelenti, hogy egy azon függvénynév többször van definiálva (implementálva), de más paraméter készlettel rendelkeznek az egyes definíciók. A függvény behívásakor a fordító a paraméter lista alapján dönti el, hogy melyik függvény defíniót kell behívni. A javascript nem támogatja a függvények túlterhelését, azaz egy függvénynév csak egyszer definiálható a kódban. Példa a HIBÁS függvény használatra:
Az elso fuggvenyunk
Láttuk, hogy bár a függvényekben definiált lokális változók a függvényen kivül is használhatóak, de ennek elkerülése végett a függvények rendelkezhetnek visszatérő értékkel, amit visszaadnak a a függvény hívásakor. Pl két szám összege:
Az elso fuggvenyunk
A return utasítás után a függvény rögtön visszatér a hívófélhez, így az után lévő utasítások már nem hajtódnak végre:
Az elso fuggvenyunk
Rekurzió definiciója: lásd rekurzió definiciójánál.
Rekurzió az, amikor egy függvényt önmagát hívja meg. VIGYÁZAT: végtelen ciklus generálható! Legegyszerűbb példa a visszaszámlálás:
Az elso fuggvenyunk
Másik egyszerű példa a faktoriális kiszámítása:
Az elso fuggvenyunk
Magukat a függvény definicíókat is el lehet menti változókba és azokat a változókat használhatjuk később, mint függvények:
Az elso fuggvenyunk
Egy függvény lehet egy másik függvény visszatérési érkére (akár csak egy változó), de a visszatérő függvény tartalmazhat egy paramétert, ami a külső függvény paramétere:
Az elso fuggvenyunk
Hasonló módon szám hozzáadása listaelemekhez:
Az elso fuggvenyunk
Láttuk korábban, hogy a javascript nem veszi túl komolyan a lokális változók kezelését: ha egy változó a kódban már definiálva van kapcsos zárójelen belül, akkor a változó használható a kapcsos zárójelen kívül is. De VIGYÁZZ! Bár ez igaz a függvényre is, de csak akkor, ha a függvény meg lett hívva. Ezért megint csak azt tanácsolom: kapcsos zárójelben definiált változókat ne akarjunk a kapcsos zárójelen kívül használni!!
Az elso fuggvenyunk
Út a teljes összeomláshoz:
Az elso fuggvenyunk
Egy másik példa:
Az elso fuggvenyunk
A this parancs az adott objektum tulajdonságait (változóit) tartalmazza. Arra kell vigyázni, hogy mindig tudnunk kell, hogy a this éppen milyen objektumra utal. A függvények önmaguktól még nem objektumok!
Az elso fuggvenyunk
Ahogy előbb látuk, a this mindig a teljes weboldal objektumára utalt. Hogyen érhető el, hogy egy függvény objektum legyen és rendelkezzen saját this hatáskörrel? Ehhez kell használni a new parancsot, ami egy objektumot hoz létre:
Az elso fuggvenyunk