--- title: arguments slug: Web/JavaScript/Referencje/Funkcje/arguments tags: - Dokumentacja_JavaScript - Dokumentacje - JavaScript - Wszystkie_kategorie translation_of: Web/JavaScript/Reference/Functions/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.callee
arguments.caller
{{ Deprecated_inline() }}arguments.length
Opró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>"