Windows - Fejlett funkciók a JavaScript nyelvben

JavaScript suli 5. rész

forráskód letöltése
A JScript nyelv sokféle speciális funkciót rejt magában. A mostani részben ezek közül szemezgetünk, és a változók hatókörével (lokális, globális), a rekurziós programozási technikával és a speciális karakterekkel (escape szekvenciákkal) foglalkozunk.
Változók hatóköre
A JScript nyelv változóinak kétféle hatóköre lehet: globális és lokális. Ha függvényen belül deklarálunk változót, akkor lokális változóról beszélünk. Csak adott függvényen belül elérhetők, és minden meghívás alkalmával újonnan deklarálódnak, lefutásuk után megszűnnek. Ezzel szemben a függvényeken kívül deklarált változók globálisak, azaz bárhonnan elérhetők. Érdekes eset, ha ugyanazzal a névvel deklarálunk lokális változót, mint amilyen névvel már létrehoztunk globálist. Ilyenkor a függvényen belül egy új változót kapunk, és ezt az új értéket használhatjuk. Kilépve a függvényből újra elérhetővé válik a globális változó.
var valt1 = "Ez egy globális változó";
function fuggveny()
{
var valt1 = "Ez lokális változó";
alert(valt1);
}
alert(valt1);
fuggveny;
A kódrészlet által megjelenített adat először a globális változó értéke, másodszor pedig a lokális, függvényen belüli érték.
A fordító a következőképpen dolgozik: Először a kódban található deklarációkat vizsgálja meg, és ha valamennyit megtalálta, azután kezdi el futtatni a kódot. Ezt fontos figyelembe venni, ugyanis ha például egy azonos nevű globális és lokális deklaráció található egy kódban, ami függvényt és függvényen kívüli utasításokat is tartalmaz, akkor attól függetlenül, hogy a függvényen belül hol helyezkedik el a deklaráció – lehet olyan helyen is, ami le sem fut – érvényre fog jutni, tehát lokális hatóköre lesz.
Rekurzió
A rekurzió egy fontos programozási technika. Azt jelenti, hogy egy függvény saját magát hívja meg. A legegyszerűbb példa a faktoriális számítása. A faktoriálist nem negatív egész számokra lehet értelmezni. A nulla érték faktoriálisa definiáltan egy. Ennél nagyobb számok esetén a szám faktoriálisa egyenlő a saját maga és a nála eggyel kisebb szám faktoriálisának szorzatával. A rekurzió és a ciklus nagyon hasonlít egymásra. Általában azért választjuk a rekurziós technikát, mert ez egy természetes, illetve kényelmes megoldás. Megvan azonban annak a lehetősége, hogy ahogy a ciklusnál végtelen ciklusba kerülhetünk, rekurziónál a sorozatos sajátmagunk meghívása során megfelelő eredmény hiánya esetén sohasem érjük el a végpontot. Ilyen példa a faktoriális rekurzió indítása negatív számmal, mivel így sosem tudja elérni a nullát a függvényhívás.
function faktorialis(szam)
{
szam = Math.floor(szam);
if (szam < 0)
{
return -1;
}
if (szam == 0)
{
return 1;
}
else return (szam * faktorialis(szam - 1));
}
Ez a függvény szemlélteti a faktoriális példát. A függvény második sorában kerekítést végzünk, negatív érték esetén hibás eredménnyel ér véget a függvény. Ha a bemenő paraméter 0, akkor az eredmény 1, ellenkező esetben a függvényhívás kezdődik elölről, eggyel kisebb értékkel.
Speciális karakterek
A JScript-ben lehetőségünk van olyan speciális karaktereket használni, melyek segítségével közvetlenül billentyűzetről be nem vihető karaktereket tudunk a szövegekbe illeszteni. Minden ilyen karakter backslash-el kezdődik. Ez a karakter egy kivételt képez, ebből tudja az értelmező, hogy a következő karakter speciális.
Escape szekvencia Karakter
\b Backspace
\f Lapdobás
\n Soremelés
\r Kocsi vissza
\t Tabulátor
\' Aposztróf
\" Macskakörömjel
\\ Backslash
Ügyeljünk arra, mivel a backslash maga a speciális karaktereket jelenti, ezért duplán kell használnunk, ha meg akarjuk közvetlenül adni, pl. útvonalak esetén.
alert("Figyelem!\nEz egy két soros figyelmeztetés!");
Példa a karakterek használatára, ha egy weboldalon valamilyen esemény hatására figyelmeztető ablakot jelenítünk meg, és abban sortörést szeretnénk alkalmazni.
A mellékelt faktoriális .html fájlt közvetlenül nyissuk meg a böngészőben, és így láthatjuk a faktoriális függvény működését, valamint egy escape szekvencia példát, a soremelést.

Javascript suli cikksorozat