--- title: arguments slug: Web/JavaScript/Reference/Functions/arguments tags: - Dokumentacja_JavaScript - Dokumentacje - JavaScript - Wszystkie_kategorie translation_of: Web/JavaScript/Reference/Functions/arguments original_slug: Web/JavaScript/Referencje/Funkcje/arguments ---
Tablicopodobny obiekt odpowiadający argumentom przekazanym do funkcji.
| Zmienna lokalna we wszystkich funkcjach oraz wycofywana własność obiektu Function | |
| Zaimplementowana w: | JavaScript 1.1, NES 2.0
JavaScript 1.2: dodano własność JavaScript 1.3: wycofywana własność JavaScript 1.4: wycofywane |
| Wersja ECMA: | ECMA-262 |
Obiekt arguments jest zmienną lokalną dostępną wewnątrz każdej funkcji; arguments jako własność Function nie może być już używana.
Do argumentów wewnątrz funkcji możesz odwołać się używając obiektu arguments. Obiekt ten zawiera pozycję dla każdego argumentu przekazanego funkcji, przy czym indeks pierwszego z nich ma wartość 0. Na przykład, jeśli do funkcji przekazane są trzy argumenty, można się do nich odwołać w następujący sposób:
arguments[0] arguments[1] arguments[2]
Argumentom mogą być również przypisywane wartości:
arguments[1] = 'nowa wartosc';
arguments{{ mediawiki.external('n') }} przypisać wartości, jeśli n jest większe niż liczba formalnych lub rzeczywistych parametrów.
Błąd ten został usunięty w silniku JavaScript 1.6.Obiekt arguments nie jest tablicą. Jest do niej podobny, lecz nie posiada żadnej z własności tablicy poza length. Przykładowo nie posiada on metody pop. Może być on jednak skonwertowany do prawdziwej tablicy:
var args = Array.prototype.slice.call(arguments);
Obiekt arguments dostępny jest wyłącznie wewnątrz ciała funkcji. Próba dostępu do obiektu arguments spoza części deklaracyjnej funkcji zakończy się błędem.
Możesz użyć obiektu arguments, jeśli funkcja wywołana jest z większą liczbą argumentów niż zostało to zadeklarowane. Jest to użyteczne dla funkcji, które wywoływać można ze zmienną liczbą argumentów.
Aby określić liczbę argumentów przekazywanych do funkcji można użyć własności
arguments.length, a następnie skorzystać z każdego z argumentów używając obiektu arguments (aby określić liczbę argumentów zadeklarowanych podczas definiowania funkcji, skorzystać można z własności Function.length).
arguments.calleearguments.caller {{ Deprecated_inline() }}arguments.lengthOprócz dostępności jako zmienna lokalna, obiekt arguments jest również własnością obiektu Function i może być poprzedzony nazwą funkcji. Na przykład, jeżeli do funkcji myFunc są przekazywane trzy argumenty o nazwie arg1, arg2, i arg3, można odwołać się do tych argumentów następująco:
myFunc.arguments[0] myFunc.arguments[1] myFunc.arguments[2]
Następujące cechy dostępne w JavaScripcie 1.1 i JavaScripcie 1.2 zostały usunięte:
arguments. Na przykład, jeśli funkcja myFunc posiada zmienną lokalną nazwaną myLocalVar, możesz odwołać się do zmiennej jako arguments.myLocalVar.
arguments. Na przykład, jeżeli funkcja myFunc posiada dwa argumenty o nazwie arg1 i arg2, możesz odwołać się do nich jako arguments.arg1 i arguments.arg2 (możesz także odwołać się do tych argumentów poprzez arguments{{ mediawiki.external(0) }} i arguments{{ mediawiki.external(1) }}).
Ten przykład definiuje funkcję łączącą kilka łańcuchów znaków. Jedynym formalnym argumentem tej funkcji jest łańcuch znaków, który określa znaki oddzielające poszczególne łączone elementy. Funkcja jest zdefiniowana następująco:
function myConcat(separator) {
result = ""; // inicjalizacja listy
// iteracja pomiędzy argumentami
for (var i = 1; i < arguments.length; i++) {
result += arguments[i] + separator;
}
return result;
}
Możesz przesłać dowolną liczbę argumentów do tej funkcji, tworząc na ich bazie listę.
// zwraca "czerwony, pomaranczowy, niebieski, "
myConcat(", ", "czerwony", "pomaranczowy", "niebieski");
// zwraca "slon; zyrafa; lew; gepard; "
myConcat("; ", "slon", "zyrafa", "lew", "gepard");
// zwraca "szalwia. bazylia. oregano. pieprz. pietruszka. "
myConcat(". ", "szalwia", "bazylia", "oregano", "pieprz", "pietruszka");
Ten przykład definiuje funkcję, która tworzy łańcuch znaków reprezentujący kod HTML listy. Jedynym argumentem formalnym tej funkcji jest ciąg znaków, który przyjmuje wartość "u" dla listy nieuporządkowanej, lub "o" w przypadku listy uporządkowanej. Funkcja ta jest zdefiniowana następująco:
function list(type) {
var result = "<" + type + "l>";
// iteracja pomiędzy argumentami
for (var i = 1; i < arguments.length; i++)
result += "<li>" + arguments[i] + "</li>";
result += "</" + type + "l>"; // koniec listy
return result;
}
Możesz przekazać funkcji dowolną liczbę argumentów, a ona doda każdy z nich jako kolejną pozycję na liście o wskazanym typie. Przykładowo następujące wywołanie funkcji:
var listHTML = list("u", "Raz", "Dwa", "Trzy");
// listHTML zawiera łańcuch "<ul><li>Raz</li><li>Dwa</li><li>Trzy</li></ul>"