arguments
Podsumowanie
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 |
Opis
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[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
).
Własności
-
arguments.callee
- Określa ciało funkcji aktualnie wykonywanej funkcji.
-
arguments.caller
- Określa nazwę funkcji, która wywołała aktualnie wykonywaną funkcję.
-
arguments.length
- Określa liczbę argumentów przekazywanych do funkcji.
Zgodność wsteczna
JavaScript 1.3 i wcześniejsze wersje
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]
JavaScript 1.1 i 1.2
Następujące cechy dostępne w JavaScripcie 1.1 i JavaScripcie 1.2 zostały usunięte:
- Każda zmienna lokalna funkcji jest własnością obiektu
arguments
. Na przykład, jeśli funkcjamyFunc
posiada zmienną lokalną nazwanąmyLocalVar
, możesz odwołać się do zmiennej jakoarguments.myLocalVar
.
- Każdy argument formalny funkcji jest własnością obiektu
arguments
. Na przykład, jeżeli funkcjamyFunc
posiada dwa argumenty o nazwiearg1
iarg2
, możesz odwołać się do nich jakoarguments.arg1
iarguments.arg2
(możesz także odwołać się do tych argumentów poprzezarguments[0]
iarguments[1]
).
Przykłady
Przykład: Definiowanie funkcji łączącej łańcuchy znaków
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");
Przykład: Definiowanie funkcji, która tworzy listę HTML
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>"