JavaScript: függvények, arrow functions, eljárások

JavaScript Web

Függvény, eljárás: Mindkettőre igaz, hogy egy adott kódrészletnek adunk azonosítót, (nevet) és ennek segítségével tudjuk a későbbiekben a függvényt, eljárást lefuttatni. Akár többször is. Akár különböző paraméterekkel. A függvények, eljárások javítják a kód áttekinthetőségét, újra felhasználhatóságát. Királyság! Mi a különbség a függvény és az eljárás között? A függvényeknek van visszatérési értékük, az eljárásoknak meg nem! Tehát a függvényben van return, erről könnyű felismerni.

JS függvény általános formája

Javascriptnél a függvényeknél nem kell megadni sem a paraméterek típusát, sem a visszatérési érték típusát. A függvényeket a function kulcsszóval adjuk meg, az utasításokat utasításblokkba helyezzük, a visszatérési értéket a return utasítás után adjuk meg. A függvény meghívása a függvény nevével történik megadva utána zárójelben a paraméterek aktuális értékét. Híváskor a zárójel akkor is kötelező, ha nincsenek aktuális paraméterek. A paraméterek és a visszatérési érték is tetszőleges elemi vagy összetett érték lehet. A paraméternek lehet adni alap értéket is, pl: function fvnev(par1, par2 = 2)

Példa: számoljuk ki egy szám négyzetét!

A függvényt a nevével hívhatjuk meg, paraméternek pedig egy számot adtam meg, ennek a négyzetét fogja kiszámolni. Mit fog eredményül adni? negyzet(negyzet(negyzet(2)))); ?
A függvénynek megadhatok változót is paraméterként:
var szam=2;
negyzet(szam); // a szam változónak a négyzetét számolja ki

Változók láthatósága

A függvényen kívül deklarált változók globális változók lesznek. Globális változók bárhonnan elérhetőek. Lokális változók: a függvényen belül deklarált változók a függvényre nézve lokálisak lesznek. Ha függvényen belül elhagyjuk a var kulcsszót, akkor viszont globális változó jön létre. Mivel a globális változók használata könnyen hibához vezethet, ezért próbáljuk meg számukat minimalizálni.

példa: szökőév-e az adott év?

A következő példában 2db eljárást is létrehoztam. Az egyik csak egy kiiratás, a másik megvizsgálja, hogy egy adott szám szökőév-e. A visszatérési értéke igaz vagy hamis. Ezt vizsgáljuk meg egy if segítségével. Ha igaz, akkor az s változó üres lesz, ha hamis akkor marad az értéke ‘NEM’. Az ‘ir’ függvénnyel pedig kiíratjuk a végeredményt.

Itt is használhatok szöveg bekérést:
var ev;
ev = prompt(‘Évszám:’);

példa: elektromos ellenállás kiszámítása megadott paraméterek alapján.

Feladat: kör adatainak kiszámítása. Mindegy, hogy a felhasználó a kör sugarát, kerületét, területét adja-e meg!

Az anonim függvények, arrow functions

Az anonim függvények olyan függvények, amelyeknek nincs nevük. Ezek a függvények közvetlenül használhatók, anélkül hogy el kellene őket nevezni. Az anonim függvényeket gyakran használják callback függvényekként, ahol egy másik függvény argumentumaként kerülnek átadásra. Az első példában egy változóhoz rendelünk egy névtelen függvényt. A második példában a setTimeout() függvénynek adunk egy anonim függvényt, ami a konzolra kiírja a szöveget. Az anonim függvényeknek is lehet adni paraméter(t)eket), illetve alapértelmezett értéket!

Hogyan lesz a sima függvényből arrow function? El kell hagyni mindent, amit lehet, a függvény nevét, a function szót. Röviden tömören:

  function negyzet(a){
            return a*a;
        }

        n = function (a) {return a*a;}

        n = (a) => {return a*a;}

        n = a => {return a*a;}

Arrow funcions: rövidebb szintaxist kínálnak az anonim függvények létrehozásához. Tehát () => jelölés paraméterek nélkül. Paraméterekkel így néz ki: (par1 = „valami” par2 = 1) =>

Eljárás

Az eljárást is a function kulcsszóval deifináljuk, csak itt nincs visszatérési érték. Ugyanúgy utasításokat hajt végre, mint a függvény.

Az első példában kiszámoljuk a téglalap területét és kerületét. Ehhez 2db paramértert vár az eljárásunk, nyilván a és b oldal hosszát. Kezdőértékük legyen 1. Az eljárás ki is írja az eredményt kozolra. Az eljárás is lehet anonim.

Anonim eljárás, paraméterekkel

Változó hosszúságú paraméter

Néha előfordul, hogy nem tudjuk pontosan mennyi paramétert fog kapni a függvényünk. Ebben az esetben használhatjuk a spread operatort: … (tripla pont)
A következő példában léterhozunk egy kerulet() függvényt. Ennek lesz egy fix első paramétere. Ha csak ennyit kap, akkor négyzet kerületét számoljuk ki. A változó paraméter számot a …tobbi_oldal várja. Ennek a hosszát a length függvénnyel le tudjuk kérdezni.

példa:

Írj egy programot, amelyben van egy ‘kerulet’ nevű függvény, amely az egyetlen kötelező paramétere
mellett fogadhat több paramétert is! Az opcionális paraméterek száma alapján döntse el milyen
síkidomról van szó, és számolja ki a kerületét
0 tetszőleges paraméter: négyzet
1 tetszőleges paraméter: téglalap
2 tetszőleges paraméter: háromszög
3 vagy több tetszőleges paraméter: sokszög
A program tartalmazzon mindegyik síkidom típusra egy-egy függvényhívást!