aboutsummaryrefslogtreecommitdiff
path: root/files/pl/web/javascript/reference/functions/arguments/index.html
blob: 8a48b5b323fbc7341de6a9a2a2bdd8748c84ae97 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
---
title: arguments
slug: Web/JavaScript/Referencje/Funkcje/arguments
tags:
  - Dokumentacja_JavaScript
  - Dokumentacje
  - JavaScript
  - Wszystkie_kategorie
translation_of: Web/JavaScript/Reference/Functions/arguments
---
<p>
</p>
<h3 id="Podsumowanie" name="Podsumowanie"> Podsumowanie </h3>
<p>Tablicopodobny obiekt odpowiadający argumentom przekazanym do funkcji.
</p>
<table class="fullwidth-table">
<tbody><tr>
<td class="header" colspan="2">
Zmienna lokalna we wszystkich funkcjach oraz wycofywana własność obiektu <a href="pl/Dokumentacja_j%c4%99zyka_JavaScript_1.5/Obiekty/Function">Function</a></td>
</tr>
<tr>
<td>Zaimplementowana w:</td>
<td>JavaScript 1.1, NES 2.0
<p>JavaScript 1.2: dodano własność <code><a href="pl/Dokumentacja_j%c4%99zyka_JavaScript_1.5/Funkcje/arguments/callee">arguments.callee</a></code>.
</p><p>JavaScript 1.3: wycofywana własność <code><a href="pl/Dokumentacja_j%c4%99zyka_JavaScript_1.5/Funkcje/arguments/caller">arguments.caller</a></code>; usunięto obsługę nazw argumentów oraz zmiennych lokalnych jako własności obiektu <code>arguments</code>.
</p><p>JavaScript 1.4: wycofywane <code>arguments</code>, <code><a href="pl/Dokumentacja_j%c4%99zyka_JavaScript_1.5/Funkcje/arguments/callee">arguments.callee</a></code> oraz <code><a href="pl/Dokumentacja_j%c4%99zyka_JavaScript_1.5/Funkcje/arguments/length">arguments.length</a></code> jako własności <code><a href="pl/Dokumentacja_j%c4%99zyka_JavaScript_1.5/Obiekty/Function">Function</a></code>; zachowanie <code>arguments</code> jako lokalnej zmiennej funkcji oraz <code><a href="pl/Dokumentacja_j%c4%99zyka_JavaScript_1.5/Funkcje/arguments/callee">arguments.callee</a></code> oraz <code><a href="pl/Dokumentacja_j%c4%99zyka_JavaScript_1.5/Funkcje/arguments/length">arguments.length</a></code> jako własności tej zmiennej.
</p>
</td>
</tr>
<tr>
<td>Wersja ECMA:</td>
<td>ECMA-262</td>
</tr>
</tbody></table>
<h3 id="Opis" name="Opis"> Opis </h3>
<p>Obiekt <code>arguments</code> jest zmienną lokalną dostępną wewnątrz każdej funkcji; <code>arguments</code> jako własność <code>Function</code> nie może być już używana.
</p><p>Do argumentów wewnątrz funkcji możesz odwołać się używając obiektu <code>arguments</code>. 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:
</p>
<pre class="eval">arguments[0]
arguments[1]
arguments[2]
</pre>
<p>Argumentom mogą być również przypisywane wartości:
</p>
<pre class="eval">arguments[1] = 'nowa wartosc';
</pre>
<div class="note"><b>Uwaga:</b> silnik JavaScript <a href="pl/SpiderMonkey">SpiderMonkey</a> posiada <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=292215">bug</a>, w którym nie można do <code>arguments{{ mediawiki.external('n') }}</code> przypisać wartości, jeśli <code>n</code> jest większe niż liczba formalnych lub rzeczywistych parametrów.
Błąd ten został usunięty w silniku JavaScript 1.6.</div>
<p>Obiekt <code>arguments</code> nie jest tablicą. Jest do niej podobny, lecz nie posiada żadnej z własności tablicy poza <code><a href="pl/Dokumentacja_j%c4%99zyka_JavaScript_1.5/Funkcje/arguments/length">length</a></code>. Przykładowo nie posiada on metody <code><a href="pl/Dokumentacja_j%c4%99zyka_JavaScript_1.5/Obiekty/Array/pop">pop</a></code>. Może być on jednak skonwertowany do prawdziwej tablicy:
</p>
<pre class="eval"> var args = Array.prototype.slice.call(arguments);
</pre>
<p>Obiekt <code>arguments</code> dostępny jest wyłącznie wewnątrz ciała funkcji. Próba dostępu do obiektu <code>arguments</code> spoza części deklaracyjnej funkcji zakończy się błędem.
</p><p>Możesz użyć obiektu <code>arguments</code>, 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
<code><a href="pl/Dokumentacja_j%c4%99zyka_JavaScript_1.5/Funkcje/arguments/length">arguments.length</a></code>, a następnie skorzystać z każdego z argumentów używając obiektu <code>arguments</code> (aby określić liczbę argumentów zadeklarowanych podczas definiowania funkcji, skorzystać można z własności <code><a href="pl/Dokumentacja_j%c4%99zyka_JavaScript_1.5/Obiekty/Function/length">Function.length</a></code>).
</p>
<h3 id="W.C5.82asno.C5.9Bci" name="W.C5.82asno.C5.9Bci"> Własności </h3>
<dl><dt> <code><a href="pl/Dokumentacja_j%c4%99zyka_JavaScript_1.5/Funkcje/arguments/callee">arguments.callee</a></code></dt><dd> Określa ciało funkcji aktualnie wykonywanej funkcji.
</dd></dl>
<dl><dt> <code><a href="pl/Dokumentacja_j%c4%99zyka_JavaScript_1.5/Funkcje/arguments/caller">arguments.caller</a></code> {{ Deprecated_inline() }}</dt><dd> Określa nazwę funkcji, która wywołała aktualnie wykonywaną funkcję.
</dd></dl>
<dl><dt> <code><a href="pl/Dokumentacja_j%c4%99zyka_JavaScript_1.5/Funkcje/arguments/length">arguments.length</a></code></dt><dd> Określa liczbę argumentów przekazywanych do funkcji.
</dd></dl>
<h3 id="Zgodno.C5.9B.C4.87_wsteczna" name="Zgodno.C5.9B.C4.87_wsteczna"> Zgodność wsteczna </h3>
<h4 id="JavaScript_1.3_i_wcze.C5.9Bniejsze_wersje" name="JavaScript_1.3_i_wcze.C5.9Bniejsze_wersje"> JavaScript 1.3 i wcześniejsze wersje </h4>
<p>Oprócz dostępności jako zmienna lokalna, obiekt <code>arguments</code> jest również własnością obiektu <code>Function</code> i może być poprzedzony nazwą funkcji. Na przykład, jeżeli do funkcji <code>myFunc</code> są przekazywane trzy argumenty o nazwie <code>arg1</code>, <code>arg2</code>, i <code>arg3</code>, można odwołać się do tych argumentów następująco:
</p>
<pre class="eval">myFunc.arguments[0]
myFunc.arguments[1]
myFunc.arguments[2]
</pre>
<h4 id="JavaScript_1.1_i_1.2" name="JavaScript_1.1_i_1.2"> JavaScript 1.1 i 1.2 </h4>
<p>Następujące cechy dostępne w JavaScripcie 1.1 i JavaScripcie 1.2 zostały usunięte:
</p>
<ul><li> Każda zmienna lokalna funkcji jest własnością obiektu <code>arguments</code>. Na przykład, jeśli funkcja <code>myFunc</code> posiada zmienną lokalną nazwaną <code>myLocalVar</code>, możesz odwołać się do zmiennej jako <code>arguments.myLocalVar</code>.
</li></ul>
<ul><li> Każdy argument formalny funkcji jest własnością obiektu <code>arguments</code>. Na przykład, jeżeli funkcja <code>myFunc</code> posiada dwa argumenty o nazwie <code>arg1</code> i <code>arg2</code>, możesz odwołać się do nich jako <code>arguments.arg1</code> i <code>arguments.arg2</code> (możesz także odwołać się do tych argumentów poprzez <code>arguments{{ mediawiki.external(0) }}</code> i <code>arguments{{ mediawiki.external(1) }}</code>).
</li></ul>
<h3 id="Przyk.C5.82ady" name="Przyk.C5.82ady"> Przykłady </h3>
<h4 id="Przyk.C5.82ad:_Definiowanie_funkcji_.C5.82.C4.85cz.C4.85cej_.C5.82a.C5.84cuchy_znak.C3.B3w" name="Przyk.C5.82ad:_Definiowanie_funkcji_.C5.82.C4.85cz.C4.85cej_.C5.82a.C5.84cuchy_znak.C3.B3w"> Przykład: Definiowanie funkcji łączącej łańcuchy znaków </h4>
<p>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:
</p>
<pre class="eval">function myConcat(separator) {
   result = ""; // inicjalizacja listy
   // iteracja pomiędzy argumentami
   for (var i = 1; i &lt; arguments.length; i++) {
      result += arguments[i] + separator;
   }
   return result;
}
</pre>
<p>Możesz przesłać dowolną liczbę argumentów do tej funkcji, tworząc na ich bazie listę.
</p>
<pre class="eval">// 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");
</pre>
<h4 id="Przyk.C5.82ad:_Definiowanie_funkcji.2C_kt.C3.B3ra_tworzy_list.C4.99_HTML" name="Przyk.C5.82ad:_Definiowanie_funkcji.2C_kt.C3.B3ra_tworzy_list.C4.99_HTML"> Przykład: Definiowanie funkcji, która tworzy listę HTML </h4>
<p>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ść "<code>u</code>" dla listy nieuporządkowanej, lub "<code>o</code>" w przypadku listy uporządkowanej. Funkcja ta jest zdefiniowana następująco:
</p>
<pre>function list(type) {
  var result = "&lt;" + type + "l&gt;";

  // iteracja pomiędzy argumentami
  for (var i = 1; i &lt; arguments.length; i++)
    result += "&lt;li&gt;" + arguments[i] + "&lt;/li&gt;";

  result += "&lt;/" + type + "l&gt;"; // koniec listy

  return result;
}
</pre>
<p>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:
</p>
<pre>var listHTML = list("u", "Raz", "Dwa", "Trzy");
// listHTML zawiera łańcuch "&lt;ul&gt;&lt;li&gt;Raz&lt;/li&gt;&lt;li&gt;Dwa&lt;/li&gt;&lt;li&gt;Trzy&lt;/li&gt;&lt;/ul&gt;"
</pre>
<p><br>
</p><p><br>
</p>
<div class="noinclude">
</div>
{{ 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" } ) }}