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';
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> */