Jest to dziwne „magia” zmiennej można odwoływać zwane „argumenty”:
function manyArgs() {
for (var i = 0; i < arguments.length; ++i)
alert(arguments[i]);
}
To jak tablicą, ale to nie jest tablica. W rzeczywistości jest tak dziwnie, że naprawdę nie powinno się go używać w ogóle. Powszechną praktyką jest, aby wartości niego w prawdziwy tablicy:
function foo() {
var args = Array.prototype.slice.call(arguments, 0);
// ...
W tym przykładzie, „args” byłaby zwykła tablica, bez żadnej z tajemniczości. Istnieje wiele nieprzyjemnych problemów z "argumentami", a w ECMAScript 5 jego funkcjonalność zostanie ograniczona.
edit — chociaż przy użyciu funkcji .slice()
pewno jest wygodne, okazuje się, że przekazanie obiektu arguments
z funkcji powoduje bóle głowy dla optymalizacji, tak bardzo, że funkcje, które robią to nie może dostać zoptymalizowany w ogóle. Prosty, bezpośredni sposób, aby włączyć arguments
do tablicy jest zatem
function foo() {
var args = [];
for (var i = 0; i < arguments.length; ++i) args[i] = arguments[i];
// ...
}
More about arguments
and optimization.
Jako alternatywę, można mieć jeden parametr - kontener "nieograniczony", taki jak tablica (lub obiekt), a następnie przekazać wszystko jako tablicę, nawet jeśli istnieje tylko "... ([one_arg])" ... –
Należy pamiętać, że aby bezpośrednio odpowiedzieć na pytanie, [Nie, nie możesz.] (Http: // stackoverflow.com/questions/22747068/is-there-a-max-number-of-arguments-javascript-functions-can-accept) – Kaiido