Funcții - javascript, mdn

În general, o funcție este o "subrutină" care poate fi apelată de la o funcție externă (sau internă, în cazul recursului) în funcție de funcția codului. Ca și programul în sine, funcția constă dintr-o secvență de instrucțiuni numită corpul funcției.





Valorile pot fi transmise funcției, iar funcția returnează o valoare.

Funcțiile nu sunt proceduri. Funcția întoarce întotdeauna o valoare, iar procedura poate reveni sau este posibil să nu se întoarcă.

Pentru a returna o altă valoare decât valoarea implicită, funcția trebuie să aibă o declarație de returnare. care indică exact ce trebuie returnat. Funcția fără aceasta va returna valoarea implicită. În cazul constructorului. numit cu cuvântul cheie nou. Valoarea implicită este valoarea acestui parametru. Pentru alte funcții, valoarea implicită este nedefinită.







Parametrii pentru a apela o funcție se numesc argumente funcționale. Argumentele sunt transmise funcției prin valoare. Dacă funcția modifică valoarea argumentului, această modificare nu afectează starea globală sau funcția de apelare. Cu toate acestea, referințele la obiecte sunt, de asemenea, valori și diferă prin faptul că, dacă o funcție modifică proprietățile unui obiect prin referință, această modificare este vizibilă în afara funcției, așa cum se arată în exemplul de mai jos.

Acest cuvânt cheie nu se referă la funcția care se execută în prezent, deci trebuie să vă referiți la funcția Obiecte după nume, chiar și în interiorul corpului funcției.

Definirea funcțiilor

Există mai multe moduri de a defini o funcție:

nume Numele funcției. param Numele argumentului transmis funcției. O funcție nu poate avea mai mult de 255 de argumente. declarații Declarațiile care alcătuiesc corpul funcției.

Expresia funcției (funcția operator)

Expresia funcției este similară definiției funcției și are aceeași sintaxă (în detaliu: operatorul funcției):

nume Numele funcției. Acesta nu poate fi specificat, caz în care funcția devine anonimă. param Numele argumentului transmis funcției. O funcție nu poate avea mai mult de 255 de argumente. declarații Declarațiile care alcătuiesc corpul funcției.

) "> Arrow function-expression (=>)

Notă: Funcțiile cu săgeți sunt tehnologii experimentale care fac parte din specificația ECMAScript 6 și nu sunt încă acceptate de toate browserele.

param Numele parametrului. Dacă nu există parametri, trebuie să puneți () loc. Dacă există mai mulți parametri, aceștia trebuie să fie de asemenea incluși în (). declarații sau expresii Dacă există mai multe instrucțiuni, trebuie să fie încheiate în <>. Pentru o expresie, parantezele curbate nu sunt necesare și rezultatul acestei expresii va fi returnat de funcție (adică funcția x => 3 + 8 va reveni la 11).

Constructor de funcții

Obiectele de funcții pot fi create utilizând noul operator (ca orice alte obiecte):

Constructorul de funcții poate fi apelat și fără noul operator, efectul va fi același.

Parametrii funcțiilor

Notă: parametrii rămași și parametrii impliciți sunt tehnologia experimentală, parte a specificației ECMAScript 6 și nu au primit încă asistență largă în rândul browserelor.

Setările implicite

Parametrii rămași

Sintaxa parametrilor rămași vă permite să transmiteți un număr infinit de argumente ca un matrice. Pentru detalii, consultați Parametrii rămași.

Obiectele argumentează

În interiorul funcției, puteți accesa argumentele sale prin intermediul obiectului de argumente.

  • argumente. Un obiect care arată ca o matrice și conține toate argumentele transmise funcției curente.
  • arguments.callee. Funcția care se execută în prezent.
  • arguments.caller. Funcția care a denumit funcția curentă.
  • arguments.length. Numărul de argumente transmise funcției.

Definiția methods

Getters și Setters

Puteți defini getters (metode pentru citire) și setters (metode de modificare) pentru orice obiect încorporat sau personalizat care acceptă adăugarea de proprietăți noi. Pentru aceasta, se utilizează sintaxa literală obiect.

obține Associates o proprietate obiect cu o funcție care va fi apelată la accesarea proprietății. set Asociază proprietatea obiectului cu funcția care va fi apelată la încercarea de a schimba proprietatea.

Definiția metodei Sintaxă

Notă: Definiția metodelor este o tehnologie experimentală, parte a specificației ECMAScript 6 și nu a obținut încă sprijin larg în rândul browserelor.

Deoarece ECMAScript 6 poate defini propriile metode, folosind o sintaxă mai scurtă similară cu getterelor și setteri. Pentru mai multe detalii, consultați Definirea metodelor.

Uitați-vă la următoarele exemple:

Funcția definită prin constructorul de funcții și echivalentă cu variabila variabilă:

Funcția-expresie anonimă, echivalentă cu multiplicarea variabilei:

Expresie de funcții numită func_name. echivalentă cu variabila variabilă:

În toate cazurile, rezultatul este aproximativ același, dar există mai multe nuanțe:

Numele funcției și variabila la care este echivalentă funcția nu sunt aceleași. Numele Funcția nu poate fi schimbat, dar variabilă, care echivalează cu o funcție, este posibil să se dea un sens diferit. În cazul unei funcții-exprimare cu numele, numele poate fi utilizat numai în cadrul funcției în sine. Când încercați să-l folosească în afara unei erori (și, în cazul în care a fost variabilă cu același nume a declarat anterior, vor fi returnate la nedefinită). De exemplu:

De asemenea, numele unei expresii funcționale este afișat dacă funcția este serializată prin metoda Function.toString.

Dar variabila căreia îi este asimilată funcția este limitată numai de domeniul propriu, care include zona în care a fost declarată funcția.

  1. Dacă o funcție este definită folosind o expresie a funcției, numele acesteia este disponibil numai în cadrul funcției.
  2. Dacă o funcție este declarată, numele său este disponibil în domeniul unde a fost definită funcția.

Deoarece funcția nu are un nume, variabila anonimă nu poate fi utilizată în interiorul funcției. De exemplu, următorul exemplu aruncă o eroare:

O funcție definită printr-o funcție de expresie moștenește domeniul de aplicare actual, adică creează o închidere. Dar funcția creată cu constructorul de funcții. Aceasta nu moștenește nimic altceva decât un domeniu global (acesta moștenește toate funcțiile în general).

  • devine parte a expresiei
  • Nu este "elementul sursă" al unei funcții sau al unui fișier. Elementul sursă nu este un element imbricat în interiorul unei funcții sau al unui script:

Definiția unei funcții în funcție de condiție

Funcțiile pot fi definite în funcție de condițiile care utilizează instrucțiunea de funcționare (extensia permisă a standardului ECMA-262 Edition 3) sau constructorul de funcții. Rețineți că aceste instrucțiuni nu sunt permise în ES5 stricte. În plus, această caracteristică se comportă diferit în diferite browsere, deci nu conta pe ea.

În codul de mai jos, funcția zero nu va fi definită și nu poate fi apelată deoarece "if (0)" este tratată întotdeauna ca fiind falsă:

Dacă schimbați condiția la 'if (1)', va fi definită funcția zero.

Exemplu: returnați un număr formatat

Această funcție returnează un șir care conține un număr cu un anumit număr de zerouri înaintea lui:

Exemplu: Funcția există

Puteți stabili dacă există o funcție utilizând operatorul de tip. Următorul exemplu verifică dacă obiectul ferestrei are funcția noFunc. Dacă există, atunci se numește; dacă nu, se efectuează o altă acțiune.

specificație







Articole similare

Trimiteți-le prietenilor: