Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

arguments

Tento překlad není kompletní. Prosím pomozte přeložit tento článek z angličtiny.

Shrnutí

Objekt podobný poli, který obsahuje všechny argumenty, které byly funkci dodány.

Popis

Objekt arguments je lokální proměnná dostupná ve všech funkcích.

Dříve byl objekt arguments vlastnost funkce - toto chování je ale zastaralé a v současných prohlížečích nedostupné.

Pomocí objektu arguments můžete přistupovat k argumentům předaným funkci. Obsahuje prvky odpovídající všem argumentům, přičemž první prvek má index 0 (stejně jako v případě pole). Například, pokud funkce dostane tři argumenty můžete k nim přistupovat takto:

arguments[0]
arguments[1]
arguments[2]

Argumenty mohou také být přepsány:

arguments[1] = 'nová hodnota';
Poznámka: Interpreter SpiderMonkey měl chybu kvůli které arguments[n] nešlo přepsat, pro n větší než počet formálních argumentů nebo předaných argumentů. Toto chování bylo opraveno v interpreteru pro JavaScript 1.6.

Objekt arguments není pole. Je podobný poli, ale nemá žádnou z vlastností pole, kromě délky (length).  Například nemá metodu pop. Nicméně může být na pole převeden:

var args = Array.prototype.slice.call(arguments);

Pokud je dostupné Array generics, lze použít i zjednodušený zápis:

var args = Array.slice(arguments);

 

Objekt arguments je dostupný pouze v těle funkce. Pokusy o přístup k arguments mimo funkci budou odměněny chybovou hláškou.

Objekt arguments je užitečný, když voláte funkci s více argumenty, než formálně přijímá, umožňuje funkcím používat proměnný počet argumentů. Pro zjištění počtu argumentů můžete použít vlastnost arguments.length a poté zpracovat každý argument pomocí smyčky (for, while, ...). (Pokud chcete zjistit formální počet argumentů, použijte vlastnost Function.length.)

Vlastnosti

arguments.callee
Odkaz na právě běžící funkci (na funkci, jejíž argumenty objekt obsahuje).
arguments.caller
Odkaz na funkci, která tuto funkci spustila. (Zastaralé)
arguments.length
Počet argumentů, které byly funkci předány.

Příklady

Příklad: Funkce, která spojí několik řetězců

Tento příklad definuje funkci, která spojí libovolný počet řetězců. Jedinný formální argument této funkce je řetězec, který představuje znak, který bude oddělovat jednotlivé části výsledku. Funkce je definována takto:

function spojŘetězce(oddělovač){
  var args = Array.prototype.slice.call(arguments, 1); //Převeď na pole bez 1. prvku
  return args.join(oddělovač); //Spoj prvky
}

Můžete předat libovolný počet argumentů:

// vrátí "červená, zelená, modrá"
spojŘetězce(", ", "červená", "zelená", "modrá");

// vrátí "Ahoj světe!"
spojŘetězce(" ", "Ahoj", "světe!");

// vrátí "nejkulaťoulinkatější"
spojŘetězce("", "nej", "ku", "la", "ťou", "lin", "ka", "těj", "ší");

Příklad: Funkce, která vytvoří HTML seznam

Tato funkce vytvoří HTML list element obsahující řetězce poskytnuté funkci jako jednotlivé položky seznamu.

function list(seřazený) {
  var výsledek;
  if(seřazený){
    výsledek = document.createElement("ol");
  }else{
    výsledek = document.createElement("ul");
  }
  
  var li;
  for(var i = 1; i<arguments.length; i++){
    li = document.createElement("li");
    li.textContent = arguments[i];
    výsledek.appendChild(li);
  }
  
  return výsledek;
}

První argument funkce je pravdivost, ostatní jsou řetězce. Můžete předat kolik argumentů chcete. Například:

var listHTML = list(false, "Raz", "Dva", "Tři").outerHTML;

/* listHTML je:

 <ul>
  <li>Raz</li>
  <li>Dva</li>
  <li>Tři</li>
 </ul>

*/

Document Tags and Contributors

 Contributors to this page: fscholz, m93a
 Last updated by: fscholz,