Argumente arbitrare pentru această funcție - pentru web

Am discutat recent cum puteți seta funcția la argumentele implicite. Acest lucru ne oferă o oarecare flexibilitate în lucrul cu argumentele. Dar dacă avem nevoie de o funcție care să ia un număr arbitrar de argumente? De exemplu, avem nevoie de o funcție care returnează suma tuturor argumentelor transmise. Cum poți rezolva această problemă?







În ciuda faptului că acest obiect nu este o matrice, se comportă ca o matrice. Argumentele conțin fiecare argument transmis funcției.

Acum, că suntem familiarizați cu obiectul argumentelor. putem implementa cu ușurință funcția dorită, care va funcționa cu orice număr de argumente:

O problemă importantă care apare atunci când se lucrează cu argumente este că acest obiect nu este o matrice reală. Putem verifica acest lucru executând următorul cod:







Deci, aceasta nu este o matrice. Există vreo diferență de utilizare?

Din păcate, există o diferență. Argumentele nu acceptă metode standard de array, cum ar fi împingere. pop. felie. indexOf sau sortare.

Acest lucru vă poate împiedica, mai ales dacă treceți argumente pentru orice funcție care așteaptă o matrice.

Soluția la această problemă este ușor de folosit, dar puțin greu de înțeles.

Să analizăm acest cod:

  1. Creăm o matrice goală.
  2. Utilizăm metoda matricei de slice.
  3. Utilizăm metoda de apel pentru a forța fragmentul să se ocupe de obiectul argumentelor, mai degrabă decât o matrice goală.

Apelarea metodei slice fără a specifica indicele de la care ar trebui să înceapă procesarea va readuce matricea originală la noi. Și asta este ceea ce avem nevoie: avem o matrice care conține toate argumentele transmise funcției.







Articole similare

Trimiteți-le prietenilor: