 |
| Autor |
Mesaj |
Admin
Administrator

Data inscrierii: 07/Dec/2013
Mesaje: 1103
|
| Citat: |
Functii
O functie este un bloc de cod care va fi executat ori de cate ori acea functie va fi apelata.
Functiile pot fi definite peste tot in document atat in head cat si in body. Dar pentru a fi siguri ca functia se incarca inainte de a fi apelata e mai bine sa fie scrisa in head. Nu va asteptati ca functia sa se execute doar daca o declarati. Trebuie apelata in mod explicit fie la un eveniment (onclick, nomouseover etc) fie in cadrul unui script.
O alta modalitate de a declara functii este prin înfăptuirea de fisiere externe cu extensia .js care sa contina functiile. Incarcarea unui fisier se realizeaza utilizând cuvantul cheie script dar se specifica si sursa, fisierul cu extensia .js :
<head>
<script src="fis.js"></script>
</head>
<html><head>
<script type="text/javascript">
function displaymessage()
{
alert("Hello World!");
}
</script>
</head>
<body>
<form>
<input>
</form>
</body></html>
Daca linia: alert("Hello world"); din exemplul de mai sus nu ar fi fost scrisa in functie, ar fi fost executata in momentul in care acea linie era incarcata de browser. Insa acum scriptul nu e executat inainte ca utilizatorul sa dea clic pe buton. Evenimentul onClick a fost atasat butonului pentru a executa functia displaymessage() atunci cand butonul este apasat(clicked).
Definirea unei functii
Sintaxa de definirea a unei functii este:
function numefunctie(var1,var2,...,varX)
{
cod de executat
}
unde var1, var2 ... sunt variabile transmise functiei iar { si } sunt acoladele de inceput si sfarsit.
Chiar daca o functie nu are parametri, tot trebuie utilizate parantezele rotunde la declarare:
function numefunctie()
{
cod de executat
}
Iata un exemplu de functie care primeste un parametru:
<html><head>
<script type="text/javascript">
function myfunction(txt)
{
alert(txt);
}
</script>
</head><body>
<form>
<input>
</form>
<p>Prin apasarea butonului va fi apelata functia cu parametru. In acest caz parametrul 'Hello' va fi afisat </p>
</body>
</html>
Se observa variabila txt, doar ca fiind folosita intre parantezele functiei la declarare poarta numele de parametru (sau argument in engleza). El este de fapt o poarta de intrare pentru date catre interiorul functiei.
In cazul apelului myfunction('Hello') parametrul txt va primi valoarea 'Hello'. Practic se realizeaza o atribuire txt='Hello'. In acest mod implicit de atribuire valoarea 'Hello' este introdusa in interiorul functiei prin parametrul txt si folosita ori de cate ori e nevoie.
Instructiunea return
Instructiunea return este folosita pentru a oferă in afara functiei o valoare care de obicei reprezinta rezultatul procesarii parametrilor de intrare. Daca pentru intrare putem avea oricati parametri, la iesire putem avea doar o singura valoare transmisa cu susținerea lui return.
Exemplu: Urmatoarea functie returneaza materialul finit a doua numere a si b:
function prod(a,b)
{
x=a*b;
return x;
}
Functia primeste ca parametri doua valori memorate de parametrii a si b si returneaza valoarea sumei lor memorate de x.
Iata cum este apelata:
produs=prod(2,6);
variabila conceput va memora rezultatul returnat de prod(2,6).
Inca un lucru de stiut:
Parametri formali si parametri efectivi
In limbajul programatorilor parametrii a si b din functia prod se numesc parametri formali. De ce? Pentru ca nu sunt decat niste recipiente pentru absolut orice fel de valori sunt transmise in momentul apelului. De exemplu a si b vor lua pe rand valorile 2,6 apoi 4,5 apoi 8,2 in urma apelurilor
<script>
document.write(prod(2,6));
document.write(prod(4,5));
document.write(prod(8,2));
</script>
cu alte cuvinte a si b tin locul oricaror valori naturale ce le sunt transmise si operatiile executate asupra lor vor fi aplicate ori de cate ori se realizeaza apelul functiei.
Dar daca avem situatia
c=2;
d=6;
document.write(prod(c,d));
Observati ca de data aceasta nu mai avem valori concrete ci parametrilor formali a si b li se transmit valorile continute de variabilele c si d.
Practic in timpul apelului functiei are loc: a=c si b=d si apoi functia este apelata cu valorile lui c si d acum detinute de a si b.
De data aceasta vom numi variabilele introduse ca parametri in cadrul apelului functiei - prod(c,d) - parametri efectivi pentru ca ei sunt cei care detin valorile efective cu care vor lucra parametrii formali a si b.
Pe simplu daca o functie este declarata
function prod (a,b)
{...}
a si b sunt parametri formali
Iar daca este apelata undeva in pagina
c=3;d=5;
produs=prod(c,d);
c si d sunt parametri efectivi
Domeniul de vizibilitate a variabilelor
Cand declarati o variabila in cadrul unei functii (chiar si ca parametru formal in interiorul parantezelor rotunde), aceasta este vizibila (accesibila sau existenta) doar in cadrul acelei functii. Altfel spus dupa executia acelei functii variabila este distrusa. Pot exista variabile cu acelasi nume in functii diverse pentru că ele sunt recunoscute ca variabile diferite. Astfel de variabile se numesc variabile locale.
Daca doriti ca o varibila sa fie accesata de mai numeroase functii, aceasta trebuie declarata in afara lor. Astfel toate functiile pentru care variabila este declarata in exteriorul lor pot accesa acea variabila. O astfel de variabila se numeste globala si durata ei de viata este atat timp cat pagina in care este declarata este deschisa. In momentul in care pagina este inchisa dispare si variabila globala.
Pe scurt daca avem:
<script>
var a=6;
function functie1()
{
var aux=5;
............
}
function functie2
{
var nr=8;
..........
}
</script>
- a este variabila globala pentru ca e declarata in exteriorul functiilor fiind vizibila din ambele
- aux si nr sunt variabile locale pentru ca sunt declarate in interiorul functiilor astfel aux nu este vizibila din functie2 iar nr nu este vizibila din functie1. |
|
|
|
|
|
 |
|
|
|
|
Subiectul urmator
Subiectul anterior
Nu puteti crea un subiect nou in acest forum Nu puteti raspunde in subiectele acestui forum Nu puteti modifica mesajele proprii din acest forum Nu puteti sterge mesajele proprii din acest forum Nu puteti vota in chestionarele din acest forum |
Powered by phpBB
© 2001, 2002 phpBB Group
|
|