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/statements/block/index.html | 160 +++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 files/pl/web/javascript/reference/statements/block/index.html (limited to 'files/pl/web/javascript/reference/statements/block/index.html') diff --git a/files/pl/web/javascript/reference/statements/block/index.html b/files/pl/web/javascript/reference/statements/block/index.html new file mode 100644 index 0000000000..bbc5c7e4fb --- /dev/null +++ b/files/pl/web/javascript/reference/statements/block/index.html @@ -0,0 +1,160 @@ +--- +title: block +slug: Web/JavaScript/Referencje/Polecenia/block +tags: + - Dokumentacja_JavaScript + - Dokumentacje + - JavaScript + - Wszystkie_kategorie +translation_of: Web/JavaScript/Reference/Statements/block +--- +

Blok instrukcji jest stosowany do zgrupowania zero lub więcej instrukcji. Blok jest ograniczony parą nawiasów klamrowych i opcjonalnie może posiadać etykietę.

+ +

Składnia

+ +

Blok

+ +
{ ListaInstrukcji }
+
+ +

Blok z etykietą

+ +
EtykietaBloku: { ListaInstrukcji }
+ +

Parametry

+ +
+
ListaInstrukcji
+
Instrukcje zgrupowane w bloku.
+
EtykietaBloku
+
Opcjonalna etykieta dla wizualnej identyfikacji lub jako cel dla break.
+
+ +

Opis

+ +

Blok instrukcji nazywany jest również w innych językach instrukcjami złożonymi. Pozwala użyć wielu instrukcji tam, gdzie JavaScript pozwala użyć tylko jednej. Składanie instrukcji w bloki jest powszechną praktyką w JavaScript. Za pomocą bloku można uzyskać też efekt przeciwny - brak instrukcji tam, gdzie jest wymagana.

+ +

Reguły zasięgu bloku

+ +

Zasięg var

+ +

Zmienne tworzone poprzez var nie mają zasięgu bloku. Zmienne zadeklarowane w bloku są ograniczone do funkcji lub skryptu zawierającego, a efektyoperacji na nich utrzymują się poza samym blokiem. Innymi słowy, instrukcje blokowe nie wprowadzają zakresu. Chociaż "samodzielne" bloki są poprawną składnią, nie chcesz używać niezależnych bloków w JavaScript, ponieważ nie robią tego, co myślisz, że robią, jeśli myślisz, że robią coś takiego jak w C lub Java. Na przykład:

+ +
var x = 1;
+{
+  var x = 2;
+}
+console.log(x); // zwraca 2
+
+ +

Otrzymujesz 2, ponieważ instrukcja var x = 2, która jest w bloku jest w tym samym zasięgu co instrukcja przed blokiem. W C lub Javie podobny kod zwróciłby 1.

+ +

Zasięg let i const

+ +

Dla odmiany identyfikatory stworzone z użyciem let i const posiadają zakres blokowy:

+ +
let x = 1;
+{
+  let x = 2;
+}
+console.log(x); // zwraca 1
+
+ +

Instrukcja x = 2 jest ograniczona w zakresie bloku, w którym została zdefiniowana.

+ +

To samo odnosi się do const:

+ +
const c = 1;
+{
+  const c = 2;
+}
+console.log(c); // zwraca 1 i nie rzuca wyjątkiem SyntaxError.
+
+ +

Zauważ, że const c = 2 nie rzuca wyjątku SyntaxError: Identifier 'c' has already been declared, ponieważ może być zadeklarowane unikalnie w ramach bloku.

+ +

Zasięg funkcji

+ +

Funkcja zadeklarowana w bloku również widzialna jest w zakresie tego bloku:

+ +
foo('outside');  // TypeError: foo is not a function
+{
+  function foo(location) {
+   console.log('foo is called ' + location);
+  }
+  foo('inside'); // wykonuje się poprawnie i zwraca 'foo is called inside'
+}
+
+ +

Bardziej precyzyjnie mówiąc blok instrukcji zapobiega Hoistingowi deklaracji funkcji na początek zakresu. Funkcja zachowuje się tak, jakby była zdefiniowana jako wyrażenie funkcji i jako taka jest tylko deklaracją zmiennej, która zostaje podniesiona do góry, na początek zakresu:

+ +
foo;  // zwraca undefined
+{
+  function foo(location) {
+   console.log('foo is called ' + location);
+  }
+  foo('inside'); // wykonuje się poprawnie i zwraca 'foo is called inside'
+}
+ +

Konsekwentnie to znaczy, że gdy przeniesiemy wywołanie funkcji poniżej jej deklaracji - nie otrzymamy błędu:

+ +
{
+  function foo(location) {
+   console.log('foo is called ' + location);
+  }
+  foo('inside'); // works correctly and logs 'foo is called inside'
+}
+foo('outside');  // works correctly and logs 'foo is called outside'
+
+ +

Specyfikacja

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ESDraft', '#sec-block', 'Block statement')}}{{Spec2('ESDraft')}} 
{{SpecName('ES6', '#sec-block', 'Block statement')}}{{Spec2('ES6')}} 
{{SpecName('ES5.1', '#sec-12.1', 'Block statement')}}{{Spec2('ES5.1')}} 
{{SpecName('ES3', '#sec-12.1', 'Block statement')}}{{Spec2('ES3')}} 
{{SpecName('ES1', '#sec-12.1', 'Block statement')}}{{Spec2('ES1')}}Initial definition. Implemented in JavaScript 1.0.
+ +

Kompatybilność z przeglądarkami

+ + + +

{{Compat("javascript.statements.block")}}

+ +

Zobacz także

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