Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Ostrożnie:nigdynienależyuzyskiwaćdostępudoargumentówwedługpozycji,
jakarguments[1].Trzymajmysięjedyniearguments.lengthitylkowtedy,
gdymusimytorobić.
Pozatymjakuzyskamydostępdoargumentu,któryzostałprzekazanynapozycji
pozaliczbązadeklarowanychparametrów?Odpowiemnatozachwilę:alenaj-
pierwmusimycofnąćsięokrokizapytaćsię:DDlaczegomogęchciećtozrobić?”.
Poważnie.Pomyślcieotymuważnieprzezminutę.
Tozdarzasiędośćrzadko.Niepowinnotobyćcoś,czegozwykleoczekujemylub
naczymsięopieramyprzypisaniunaszychfunkcji.Jeśliokażesię,żemamytaki
scenariusz,spędźmydodatkowych20minut,próbujączaprojektowaćinterakcje
zfunkcjąwinnysposób.Nazwijmytendodatkowyargument,nawetjeślijestto
sytuacjawyjątkowa.
Sygnaturęfunkcji,któraakceptujenieokreślonąliczbęargumentów,określasię
jakofunkcjęzezmiennąliczbąargumentów.Niektórzywolątenrodzajfunkcji,
alemoimzdaniemwiększośćprogramistówFPunikatego,jeślitomożliwe.
OK,naraziewystarczy.
Powiedzmy,żechcemymiećdostępdoargumentówwsposóbpozycyjny,podobny
dotablicy,zapewnedlatego,żechcemymiećdostępdoargumentu,któryniema
dlaswojejpozycjiformalnegoparametru.Jakmożemytozrobić?
NapomocprzychodziES6!Zadeklarujmynasząfunkcjęzapomocąoperatora
...określanegoróżnie,jakoDrozprowadzający”(spread),Dspoczynkowy”(rest)
lub(cojapreferuję)Dzbierający”(gather):
functionfoo(x,y,z,...args){
//..
}
Czywidzicienaliścieparametrów...args?TodeklaratywnapostaćwES6,która
mówisilnikowi,abyodebrał(hmm,Dzebrał”)wszystkiepozostałeargumenty(jeśli
są),którenieprzypisanedonazwanychparametrów,anastępnieumieściłje
wjawnejtablicyonazwieargs.argsbędziezawszetablicą,nawetjeślijestona
pusta.Aleniebędziezawieraćwartościprzypisanychdoparametrówx,yiz,tylko
to,cozostanieprzekazanepozatymitrzemapierwszymiwartościami:
functionfoo(x,y,z,...args){
console.log(x,y,z,args);
}
Wejściefunkcji
19