În acest capitol:
O funcție este un bloc de cod care este definit o dată și apoi poate fi apelat să execute orice număr de ori.
Funcționează ca obiecte de primă clasă
- Ele pot fi create folosind literali
- Ele pot fi atribuite variabilelor, elementelor de matrice și proprietăților altor obiecte
- Ele pot fi transmise ca argumente pentru funcții
- Ele pot fi returnate ca valori din funcții
- Aceștia pot avea proprietăți care pot fi create și atribuite dinamic
Definirea și apelarea unei funcții
Funcția este definită utilizând cuvântul cheie funcțional. urmate de următoarele componente:
- Identificatorul care definește numele funcției. Verbul este de obicei ales ca nume de funcție, deoarece funcția efectuează acțiunea.
- O pereche de paranteze în jurul unei liste cu zero sau mai mulți identificatori, separate prin virgule. Acești identificatori se numesc parametri funcționali.
- Corpul funcției, constând dintr-o pereche de bretele, în interiorul cărora sunt instrucțiuni. Funcția corpului poate fi goală, dar ar trebui să fie întotdeauna specificată coarda curată. Instrucțiunile din corpul funcției sunt executate de fiecare dată când este apelată funcția.
Sintaxa definiției funcției este după cum urmează:
Un exemplu simplu al unei definiții a funcției:
În ciuda faptului că funcția exemplu este scurtă și simplă, ea conține toate componentele listate.
Codul programului aflat în corpul funcției este executat nu în momentul definirii funcției, ci în momentul apelului. Pentru a apela funcția, se folosește un operator de apel, care este o pereche de paranteze (). Instrucțiunea de apel este specificată după numele funcției care este solicitată pentru execuție. Aceasta inițiază executarea funcției în sine. Aceasta înseamnă că controlul este transferat la instrucțiunile din corpul funcției. După executarea acestuia, controlul este transmis instrucțiunii după apelul funcției. Apelul pentru funcții se încheie ca toate instrucțiunile cu punct și virgulă (;):
Definiția unei funcții considerată în specificarea unei limbi este denumită "Declarație de funcții" (FD abreviată).
Parametrii și argumentele
Atunci când se numește o funcție, pot fi transmise parametrii, cu ajutorul cărora parametrii vor fi inițializați. Valorile care sunt transmise când se numește funcția se numesc argumente.
- Dacă, atunci când este apelată o funcție, mai sunt transmise mai multe argumente decât parametrii specificați, argumentele "superficiale" pur și simplu nu sunt atribuite parametrilor. Să presupunem următoarea definiție a funcției: Dacă apelați foo (1,2,3,4,5) atunci când o apelați, atunci argumentele 1,2 și 3 vor fi atribuite parametrilor a, b și c respectiv. În același timp, argumentele 4 și 5 nu vor fi atribuite niciunuia dintre parametrii acestei funcții.
- Dacă funcția are mai mulți parametri decât argumentele transmise, parametrii fără argumente corespunzătoare sunt atribuite valorii nedefinite. Deci, dacă specificați foo (1) atunci când se numește foo (a, b, c), a este setată la 1, iar b și c sunt nedefinite.
Toate funcțiile au doi parametri impliciți: argumente și acest lucru. Sub cuvântul implicit, se presupune că acești parametri nu sunt enumerați explicit în semnătura (definiția) funcției. Acești parametri sunt, de asemenea, implicit inițializați atunci când se numește funcția. Acestea pot fi accesate în funcția în sine în același mod ca oricare alți parametri stabiliți în mod explicit.
Argument parametru
Parametrul argumente este un obiect care conține toate argumentele transmise funcției. Este un obiect local care este accesibil numai în cadrul funcției. Dacă încercați să accesați argumente în afara funcției, o eroare va fi aruncată.
Argumentul obiect nu este un tip Array. Arată ca o matrice, dar nu are nici o metodă și proprietăți, cu excepția lungimii. Deoarece este similară unei matrice, puteți face referire la argumentele transmise funcției prin intermediul unor indici. Indicele primului element 0. De exemplu, dacă o funcție a trecut 3 argumente, puteți să consultați fiecare argument după cum urmează:
Parametrul acesta
Acest parametru se referă la un obiect care este implicit asociat cu funcția apelată și se numește contextul apelului funcției. Ceea ce specifică acest parametru nu este determinat de modul în care funcția este declarată, ci de modul în care se numește.
Instrucțiunile se întorc
O funcție poate returna o valoare (rezultatul unei funcții) la programul care a numit-o. Valoarea returnată este trecută la punctul de apel al funcției.
Instrucțiunea de returnare din interiorul funcției servește la determinarea valorii returnate de funcție. Valoarea returnată poate fi orice valoare. Dacă o expresie este folosită ca valoare de retur, expresia însăși este returnată programului, dar rezultatul calculului său. Instrucțiunea de returnare are următoarea sintaxă:
Pentru a utiliza în continuare valoarea returnată, puteți atribui rezultatul unei funcții unei variabile, de exemplu:
Instrucțiunea de returnare poate fi localizată oriunde în funcție. Rețineți că atunci când se execută codul în interiorul funcției, odată ce declarația de returnare este atinsă, funcția returnează o valoare și iese imediat. Codul din corpul funcției după declarația de returnare va fi ignorat.
Mai multe declarații de returnare pot fi utilizate în interiorul funcției, de exemplu, dacă valoarea returnată depinde de anumite condiții de execuție:
Dacă instrucțiunea return nu este specificată sau valoarea de retur nu este specificată, funcția returnează nedefinit.
Selectarea unui nume de funcție
Numele funcției ar trebui să fie ales prin aceleași reguli ca și numele tuturor celorlalte identificatoare. Singura diferență este că verbul este de obicei ales drept numele funcției, deoarece funcția efectuează acțiunea.
Funcțiile născute
În interiorul funcției imbricate puteți accesa parametrii și variabilele locale ale funcției de închidere (extern):
Ridicarea definiției funcției
Definiția funcției implicit "se ridică" la începutul scriptului sau la funcția sa de închidere (externă), astfel încât funcția poate fi apelată chiar înainte de a fi definită.
Astfel, funcțiile de mai sus sunt echivalente cu definițiile funcțiilor date mai jos, în care definițiile sunt "ridicate" la început.