In aceasta lectie vor fi prezentate trei exemple de scripturi care folosesc functii mai complexe decat cele prezentate in lectia anterioara.
Cand creem o functie ii definim si numarul de argumente pe care le accepta, lucru de care se tine cont in momentul apelarii ei.
Sunt situatii in care dorim sa transmitem functiei un numar diferit de argumente, care poate fi mai mic sau mai mare decat numarul de argumente pe care le are functia la construirea ei.
Intr-o astfel de situatie putem folosi o valoare prestabilita in interiorul functiei, pentru cazul in care nu sunt
transferate argumente.
In continuare va fi prezentat un script care afiseaza un mesaj de salut atunci cand utilizatorul ajunge la o pagina web. Programul afiseaza un anumit mesaj daca recunoaste sau nu numele vizitatorului. Daca "utilizator" nu este "null" variabila a fost definita. Acest lucru este posibil doar daca o valoare, ca " Media", este transferata functiei. Daca variabila "utilizator" este egal cu "null" atunci scriptul evita folosirea variabilei in mesajul de salut.
<html>Acest script va afisa in pagina urmatorul rezultat:
<head>
<script type="text/javascript">
<!--
function mesaj(utilizator) {
if (utilizator!=null) {
document.writeln("Salut "+utilizator);
}
else {
document.writeln("Bine ati venit pe site!");
}
}
//-->
</script>
</head>
<body>
<script type="text/javascript">
<!--
document.writeln("Prima apelare a functiei mesaj() <br />");
mesaj("Media");
document.writeln("<br />A doua apelare a functiei mesaj() <br />");
mesaj();
//-->
</script>
</body>
</html>
Prima apelare a functiei mesaj()- Studiati codul functiei si observati diferenta mesajelor din cele ddoua apelari.
Salut Media
A doua apelare a functiei mesaj()
Bine ati venit pe site!
<html>Acest exemplu va afisa in pagina web urmatorul rezultat:
<head>
<script type="text/javascript">
<!--
function mesaj(utilizator) {
if (utilizator!=null) {
document.writeln("Salut "+utilizator);
}
else {
document.writeln("Bine ati venit pe site");
}
numarArgumente=mesaj.arguments.length;
if(numarArgumente>1) {
for (var i=1; i<numarArgumente; i++) {
document.writeln(mesaj.arguments[i]);
}
}
}
//-->
</script>
</head>
<body>
<script type="text/javascript">
<!--
var utilizator="Marius", extraMesaj="Bine ai revenit";
var utilizator2=null;
var extraMesaj1="Vrei sa devii membru ?";var extraMesaj2="Te poti inscrie online";
mesaj(utilizator,extraMesaj);
document.writeln("<hr>");
mesaj(utilizator2,extraMesaj1,extraMesaj2);
//-->
</script>
</body>
</html>
Salut Marius Bine ai revenit
Bine ati venit pe site Vrei sa devii membru ? Te poti inscrie online
O functie JavaScript poate fi recursiva, adica se poate autoapela.
O metoda buna de a demonstra capacitatea recursiva a functiilor este rezolvarea unei ecuatii factoriale.
In exemplul urmator avem o functie JavaScript recursiva care afla factorialul unui numar precizat "n" (aici 7):
<html>In fereastra browser-ului va apare urmatorul rezultat:
<head>
<script type="text/javascript">
<!--
document.writeln("Calculeaza factorialul de 7 prin functie recursiva")
function factorial(n) {
var rezultat;
if (n>0) {
rezultat = n*factorial(n-1);
}
else if (n==0) {
rezultat = 1;
}
else {
rezultat = null;
}
return(rezultat)
}
//-->
</script>
</head>
<body>
<form>
<input type = "button" value = "Factorial 7" onclick="alert(factorial(7))" >
</form>
</body>
</html>
- Functia verifica intai daca "n" este mai mare decat 0, apoi in caz afirmativ, "n" se inmulteste cu rezultatul returnat de auto-apelarea functiei cu argumentul "n-1". Cand "n" ajunge 0, aparitia cea mai imbricata a functiei se incheie si returneaza prima valoare. JavaScript incheie fiecare functie imbricata pana ce ajunge la apelarea initiala a functiei "factorial", apoi intoarce rezultatul final.