Aici, oamenii vor vorbi despre diferite metode utile, dar nu evidente, de scriere a funcțiilor.
Cum se creează parametrii funcțional opțional?
Există funcții, dintre care câțiva parametri foarte adesea iau aceleași valori. Nu se pot face acești parametri opționali, astfel încât atunci când funcția este apelată, ele pot fi sărite și ele însele își iau valorile necesare?
Dacă, atunci când a fost apelată o funcție, oricare dintre parametrii ei au fost omisi, ar fi setat la nedefinit în codul de gel al funcției. Astfel, succesiunea acțiunilor este clară.
Verificăm dacă acest parametru are valoarea nedefinită (adică dacă a fost trecută explicit în funcție). Dacă da, treceți la pasul 2, dacă nu, la pasul 3.
Atribuiți o valoare implicită parametrului.
Utilizăm valoarea acestui parametru în calculele din interiorul corpului funcției.
funcțional func1 (par1, par2)
dacă (typeof (par2) == "undefined") par2 = 0;
> Putem numi această funcție ca în cazul tuturor parametrilor:
și cu indicarea numai a primului parametru - obligatoriu:
În acest din urmă caz, al doilea parametru va obține valoarea 0 în corpul funcției. Efectul va fi același dacă vom numi o funcție cu astfel de parametri:
Expresia verificării parametrilor privind valoarea nedefinită în corpul funcției poate fi redată mai scurtă. Aici:
funcțional func1 (par1, par2)
dacă (! par2) par2 = 0;>
Valoarea nedefinită, fiind parte integrantă a unei expresii logice, este întotdeauna convertită la falsă. În exemplul de mai sus, am folosit acest lucru.
Parametrii opționali trebuie să fie la sfârșitul listei parametrilor funcției (vezi exemplele de mai sus). Dacă, de exemplu, facem primul parametru al unei funcții opțional și sunăm astfel:
Cum se transferă funcțiile la un număr arbitrar de parametri?
Trebuie să scriem o funcție care să ia un număr arbitrar de parametri. Cum se face acest lucru?
În interiorul corpului funcției, este disponibilă o serie de argumente, ale căror elemente conțin toți parametrii trecuți la această funcție. Această matrice are o proprietate de lungime care returnează numărul elementelor din matrice.
var cu = arguments.length;
pentru (i = 0; i
var str = func2 ("Java", "Script");
O altă funcție care ia un număr arbitrar de parametri șir și returnează un șir compus din valorile lor. Dar de data aceasta, primul parametru obligatoriu, este nevoie de un caracter separator, care va fi plasat între aceste linii.
var cu = arguments.length;
pentru (i = 1; i
var str = func3 ("+", "Java", "Script");
pune șirul "Java + Script" în variabila str.
În final, puteți trece un matrice ca parametru pentru funcția cu numărul dorit de elemente.
Un exemplu ușor modificat de func3:
func func3 (pDelimiter, pars)
var cu = pars.length;
pentru (i = 0; i
Această funcție va fi apelată după cum urmează:
var str = func3 ("", noul Array ("Java", "Script"));
atunci șirul "Java Script" va apărea în variabila str.
Revenirea la funcțiile cu mai multe valori Problemă
1. Calculăm toate valorile necesare în corpul funcției.
2. Creați o matrice în corpul funcției.
3. Plasați valorile calculate în elementele acestei matrice.
4. Returnați matricea rezultată cu operatorul de retur.
Și este ușor să extrageți valorile elementelor din matrice returnate de funcție.
// Aici sunt expresiile care calculează valorile cerute.
// Să presupunem că toate acestea. trei, și sunt plasate în variabile
// valuel, value2, and value3.
Var arr = Array nou ();
Utilizând această funcție:
var a = someFunc (); var vl = a [0]; var v2 = a [1]; var v3 = a [2];
În loc de matricele obișnuite cu indexuri numerice, putem folosi seturi de aritmetică cu indici de element șir. De exemplu:
// Aici sunt expresiile care calculează valorile dorite
// valuel, value2, and value3.
Var arr = Array nou ();
retur arr; var a = someFunc (); var v1 = un ["valuel"]; var v2 = a ["valoare2"]; var v3 = o ["valoare3"];