--- title: arguments slug: Web/JavaScript/Referencje/Funkcje/arguments tags: - Dokumentacja_JavaScript - Dokumentacje - JavaScript - Wszystkie_kategorie translation_of: Web/JavaScript/Reference/Functions/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ść arguments.callee.

JavaScript 1.3: wycofywana własność arguments.caller; usunięto obsługę nazw argumentów oraz zmiennych lokalnych jako własności obiektu arguments.

JavaScript 1.4: wycofywane arguments, arguments.callee oraz arguments.length jako własności Function; zachowanie arguments jako lokalnej zmiennej funkcji oraz arguments.callee oraz arguments.length jako własności tej zmiennej.

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';
Uwaga: silnik JavaScript SpiderMonkey posiada bug, w którym nie można do 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).

Własności

arguments.callee
Określa ciało funkcji aktualnie wykonywanej funkcji.
arguments.caller {{ Deprecated_inline() }}
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:

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>"



{{ languages( { "en": "en/Core_JavaScript_1.5_Reference/Functions/arguments", "es": "es/Referencia_de_JavaScript_1.5/Funciones/arguments", "fr": "fr/R\u00e9f\u00e9rence_de_JavaScript_1.5_Core/Fonctions/arguments", "ja": "ja/Core_JavaScript_1.5_Reference/Functions/arguments" } ) }}