Kaip sukurti funkcijas su kintamais argumentais javascript?

Noriu sukurti funkciją javascript'e su kintamu argumentų skaičiumi. Šis pavyzdys yra toks, kaip noriu skambinti šiai funkcijai:

 myFunction(1,2); myFunction(1,2,3); myFunction(1,2,3,4); myFunction(1,2,3,4,5); myFunction(1,2,3,4,5,6); 

Ar kas nors žino, kaip apibrėžti šią funkciją?

17
09 сент. rugsėjo 9 d. 2011-09-09 16:51 '11 at 16:51 2011-09-09 16:51
@ 6 atsakymai

Jūs galite prieiti prie argumentų pagal jų eilės poziciją, nenurodydami jų prototipe taip:

 function myFunction() { for (var i = 0; i < arguments.length; i++) alert(arguments[i]); } myFunction(1, 2, "three"); >>1 >>2 >>three 

Arba, jei perduosite semantiškai susijusių numerių rinkinį, galite naudoti masyvą;

 function myFunction(arr) { ... } result = myFunction([1,2,3]); 
26
09 сент. Alex K. atsakymas 09.09. 2011-09-09 16:52 '11 at 16:52 2011-09-09 16:52

Paskutinis atnaujinimas

Sustabdymo parametrai yra palaikomi visose naujose naršyklėse. Skaitykite daugiau čia.

Likusių parametrų sintaksė leidžia mums atstovauti neribotą skaičių argumentų kaip masyvą, kurį taip pat galite perduoti kitoms funkcijoms.

 function myFunction(...data){ console.log(...data); myOtherFunction(...data); } myFunction(1,2,3); //logs 1,2,3 myFunction([1,2,3]); //logs [1,2,3] 
8
26 апр. atsakymas pateikiamas optimistanoop 26 balandis. 2017-04-26 12:57 '17 at 12:57 2017-04-26 12:57

Naudokite „argumentų“ kintamąjį taip:

 function myFunction() { alert(arguments.length + ' arguments'); for( var i = 0; i < arguments.length; i++ ) { alert(arguments[i]); } } 

Skambinkite metodais, kaip anksčiau

 myFunction(1,2); myFunction(1,2,3,4,5,6); 
3
09 сент. atsakymą pateikė Jean-Charles 09 Sep. 2011-09-09 16:57 '11 at 16:57 2011-09-09 16:57

Jei trūksta argumento, naudokite numatytąją vertę. Kaip šis ...

 function accident() { //Mandatory Arguments var driver = arguments[0]; var condition = arguments[1] //Optional Arguments var blame_on = (arguments[2]) ? arguments[2] : "Irresponsible tree" ; } accident("Me","Drunk"); 
2
09 сент. Atsakymą pateikė Stephan 09 Sep. 2011-09-09 16:56 '11, 16:56, 2011-09-09 16:56
2
09 сент. Matthew Wilson atsakymas, rugsėjo 09 d 2011-09-09 16:52 '11 at 16:52 2011-09-09 16:52

Kaip priedas: galite priskirti reikšmes nepriskirtiems funkcijų parametrams, kaip (vokiečių kalba)

 arguments[0] = 5; 
1
31 июля '15 в 18:22 2015-07-31 18:22 atsakymą pateikė serv-inc liepos 31 d. 15 val. 22:22 2015-07-31 18:22

Žr. Kitus klausimus, susijusius su etiketėmis, arba Užduoti klausimą