From de5c456ebded0e038adbf23db34cc290c8829180 Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Thu, 11 Feb 2021 14:49:24 +0100 Subject: unslug pl: move --- .../reference/operators/spread_syntax/index.html | 230 +++++++++++++++++++++ 1 file changed, 230 insertions(+) create mode 100644 files/pl/conflicting/web/javascript/reference/operators/spread_syntax/index.html (limited to 'files/pl/conflicting/web/javascript/reference/operators/spread_syntax') diff --git a/files/pl/conflicting/web/javascript/reference/operators/spread_syntax/index.html b/files/pl/conflicting/web/javascript/reference/operators/spread_syntax/index.html new file mode 100644 index 0000000000..c8cc1533f8 --- /dev/null +++ b/files/pl/conflicting/web/javascript/reference/operators/spread_syntax/index.html @@ -0,0 +1,230 @@ +--- +title: Spread syntax +slug: Web/JavaScript/Referencje/Operatory/Spread_operator +tags: + - ECMAScript 2015 + - Iterator + - JavaScript + - Operator Rozwinięcia +translation_of: Web/JavaScript/Reference/Operators/Spread_syntax +translation_of_original: Web/JavaScript/Reference/Operators/Spread_operator +--- +
{{jsSidebar("Operators")}}
+ +

Operator spread umożliwia rozwinięcie wyrażenia. Składnia rozwinięcia pozwala na rozwinięcie wyrażenia w miejscach, w których potrzebne jest wiele argumentów (do wywołań funkcji), wiele elementów (do literałów tablicowych) lub wiele zmiennych ().

+ +

Składnia

+ +

Do wywołań funkcji:

+ +
mojaFunkcja(...iterowalnyObiekt);
+
+ +

Do literałów tablicowych:

+ +
[...iterowalnyObiekt, 4, 5, 6]
+ +

 

+ +

Do przypisań destrukturyzujących:

+ +
var [glowa, ...ogon] = [1, 2, 3, 4]
+ +

Przykłady

+ +

Lepsze zastosowanie

+ +

Przykład: powszechne jest użycie {{jsxref( "Function.prototype.apply")}} w przypadkach, gdy chcesz użyć tablic jako argumentów funkcji.

+ +
function mojaFunkcja(x, y, z) { }
+var args = [0, 1, 2];
+mojaFunkcja.apply(null, args);
+ +

Ze składnią rozwinięcia (spread) ES2015 powyższy kod można zapisać jako:

+ +
function mojaFunkcja(x, y, z) { }
+var args = [0, 1, 2];
+mojaFunkcja(...args);
+ +

Dowolny argument w liście argumentów może użyć składni rozwinięcia i może być użyty wiele razy.

+ +
function myFunction(v, w, x, y, z) { }
+var args = [0, 1];
+myFunction(-1, ...args, 2, ...[3]);
+ +

Potężniejszy literał tablicowy

+ +

Przykład: Jeżeli masz tablicę i chcesz utworzyć nową tablicę z tą tablicą jako jej częścią, składnia literału tablicowego nie jest już wystarczająca i należy cofnąć się do programowania imperatywnego, użyć kombinacji push, splice, concat, itp. Z użyciem składni rozwinięcia wygląda to dużo prościej:

+ +
var czesci = ['ramiona', 'kolana'];
+var rymowanka = ['glowa', ...czesci, 'i', 'palce']; // ["glowa", "ramiona", "kolana", "i", "palce"]
+
+ +

Tak samo jak rozwinięcie może być użyte do list argumentów, ... mogą być użyte wszędzie w literale tablicowym, także wiele razy.

+ +

Zastosowanie z new

+ +

Przykład: W ES5 nie jest możliwa kompozycja newapply. (W ES5, apply wykonuje [[Call]], a nie [[Construct]].) W ES2015 składnia rozwinięcia wygląda następująco:

+ +
var daty = czytajDaty(bazaDanych);
+var d = new Date(...daty);
+ +

Kopiowanie tablicy

+ +
var tablica = [1,2,3];
+var tablica2 = [...tablica]; // jak tablica.slice()
+tablica2.push(4); // tablica2 staje się [1,2,3,4], tablica pozostaje niezmieniona
+
+
+ +

Ulepszone push

+ +

Przykład: {{jsxref("Global_Objects/Array/push", "push")}} jest często używany, by dodać tablicę na koniec innej tablicy. W ES5 jest to często osiągane przez:

+ +
var tablica1 = [0, 1, 2];
+var tablica2 = [3, 4, 5];
+// Dodaj wszystkie elementy z tablica2 do tablica1
+Array.prototype.push.apply(tablica1, tablica2);
+ +

W ES2015 z rozwinięciem wygląda to następująco:

+ +
var tablica1 = [0, 1, 2];
+var tablica2 = [3, 4, 5];
+tablica1.push(...tablica2);
+ +

Użycie jedynie dla obiektów iterowalnych

+ +
var obiekt = {"klucz1":"wartosc1"};
+function mojaFunkcja(x) {
+   /* ... */
+}
+// proba rozwinięcia nieiterowalnego elementu
+// spowoduje błąd
+mojaFunkcja(...obiekt);
+var args = [...obiekt];
+// TypeError: obiekt is not iterable
+ +

Operator reszty

+ +

Operator reszty, który wygląda dokładnie jak składnia rozwinięcia (spread), jest używany do destrukturyzacji obiektów i tablic. W pewnym stopniu, elementy reszty są przeciwieństwem elementów rozwinięcia: rozwinięcie 'rozbija' tablicę na elementy, natomiast reszta zbiera wiele elementów i 'zwija' je w jeden element.

+ +

Specyfikacje

+ + + + + + + + + + + + + + + + + + + + + +
SpecyfikacjaStanKomentasz
{{SpecName('ES2015', '#sec-array-initializer')}}{{Spec2('ES2015')}}Zdefiniowany w kilku sekcjach specyfikacji: Array Initializer, Argument Lists
{{SpecName('ESDraft', '#sec-array-initializer')}}{{Spec2('ESDraft')}} 
+ +

Kompatybilność przeglądarek

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunkcjaChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Operacja rozwinięcia w literałach tablicowych{{CompatChrome("46")}}{{ CompatGeckoDesktop("16") }}{{CompatIE("Edge")}}{{CompatNo}}7.1
Operacja rozwinięcia w wywołaniach funkcji{{CompatChrome("46")}}{{ CompatGeckoDesktop("27") }}{{CompatIE("Edge")}}{{CompatNo}}7.1
Operacja rozwinięcia w destrukturyzacji{{CompatChrome("49")}}{{ CompatGeckoDesktop("34") }}{{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunkcjaAndroidAndroid WebviewFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Operacja rozwinięcia w literałach tablicowych{{CompatNo}}{{CompatChrome("46")}}{{ CompatGeckoMobile("16") }}{{CompatNo}}{{CompatNo}}8{{CompatChrome("46")}}
Operacja rozwinięcia w wywołaniach funkcji{{CompatNo}}{{CompatChrome("46")}}{{ CompatGeckoMobile("27") }}{{CompatNo}}{{CompatNo}}8{{CompatChrome("46")}}
Operacja rozwinięcia w destrukturyzacji{{CompatNo}}{{CompatNo}}{{ CompatGeckoDesktop("34") }}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatNo}}
+
+ +

Zobacz też

+ + -- cgit v1.2.3-54-g00ecf