aboutsummaryrefslogtreecommitdiff
path: root/files/pl/web/javascript/reference/statements/block/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/pl/web/javascript/reference/statements/block/index.html')
-rw-r--r--files/pl/web/javascript/reference/statements/block/index.html160
1 files changed, 160 insertions, 0 deletions
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
+---
+<p><strong>Blok instrukcji</strong> jest stosowany do zgrupowania zero lub więcej instrukcji. Blok jest ograniczony parą nawiasów klamrowych i opcjonalnie może posiadać etykietę.</p>
+
+<h2 id="Sk.C5.82adnia" name="Sk.C5.82adnia">Składnia</h2>
+
+<h3 id="Blok">Blok</h3>
+
+<pre class="eval">{ ListaInstrukcji }
+</pre>
+
+<h3 id="Blok_z_etykietą">Blok z etykietą</h3>
+
+<pre>EtykietaBloku: { ListaInstrukcji }</pre>
+
+<h3 id="Parametry" name="Parametry">Parametry</h3>
+
+<dl>
+ <dt><code>ListaInstrukcji</code></dt>
+ <dd>Instrukcje zgrupowane w bloku.</dd>
+ <dt><font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: rgba(220, 220, 220, 0.498039);">EtykietaBloku</span></font></dt>
+ <dd>Opcjonalna <a href="/pl/docs/Web/JavaScript/Referencje/Polecenia/etykieta">etykieta</a> dla wizualnej identyfikacji lub jako cel dla <a href="/pl/docs/Web/JavaScript/Referencje/Polecenia/break">break</a>.</dd>
+</dl>
+
+<h2 id="Opis" name="Opis">Opis</h2>
+
+<p>Blok instrukcji nazywany jest również w innych językach <strong>instrukcjami złożonymi</strong>. 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.</p>
+
+<h3 id="Reguły_zasięgu_bloku">Reguły zasięgu bloku</h3>
+
+<h4 id="Zasięg_var">Zasięg <code>var</code></h4>
+
+<p>Zmienne tworzone poprzez <code>var</code> <strong>nie mają </strong>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:</p>
+
+<pre><code>var x = 1;
+{
+ var x = 2;
+}
+console.log(x); // zwraca 2</code>
+</pre>
+
+<p>Otrzymujesz 2, ponieważ instrukcja <code>var x = 2</code>, 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.</p>
+
+<h4 id="Zasięg_let_i_const">Zasięg <code>let</code> i <code>const</code></h4>
+
+<p>Dla odmiany identyfikatory stworzone z użyciem <a href="en-US/docs/Web/JavaScript/Reference/Statements/let">let</a> i <a href="/pl/docs/Web/JavaScript/Referencje/Polecenia/const">const</a> <strong>posiadają</strong> zakres blokowy:</p>
+
+<pre><code>let x = 1;
+{
+ let x = 2;
+}
+console.log(x); // zwraca 1</code>
+</pre>
+
+<p><code><font face="Arial, x-locale-body, sans-serif"><span style="background-color: #ffffff;">Instrukcja </span></font>x = 2</code> jest ograniczona w zakresie bloku, w którym została zdefiniowana.</p>
+
+<p>To samo odnosi się do <code>const</code>:</p>
+
+<pre><code>const c = 1;
+{
+ const c = 2;
+}
+console.log(c); // zwraca 1 i nie rzuca wyjątkiem SyntaxError.</code>
+</pre>
+
+<p>Zauważ, że <code>const c = 2</code> nie rzuca wyjątku <code>SyntaxError: Identifier 'c' has already been declared</code>, ponieważ może być zadeklarowane unikalnie w ramach bloku.</p>
+
+<h4 id="Zasięg_funkcji">Zasięg <code>funkcji</code></h4>
+
+<p>Funkcja zadeklarowana w bloku również widzialna jest w zakresie tego bloku:</p>
+
+<pre><code>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'
+}</code>
+</pre>
+
+<p>Bardziej precyzyjnie mówiąc blok instrukcji zapobiega <a href="/pl/docs/Glossary/Hoisting">Hoisting</a>owi 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:</p>
+
+<pre><code>foo; // zwraca undefined
+{
+ function foo(location) {
+ console.log('foo is called ' + location);
+ }
+ foo('inside'); // wykonuje się poprawnie i zwraca 'foo is called inside'
+}</code></pre>
+
+<p>Konsekwentnie to znaczy, że gdy przeniesiemy wywołanie funkcji poniżej jej deklaracji - nie otrzymamy błędu:</p>
+
+<pre><code>{
+ 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'</code>
+</pre>
+
+<h2 id="Specyfikacja">Specyfikacja</h2>
+
+<table>
+ <tbody>
+ <tr>
+ <th scope="col">Specification</th>
+ <th scope="col">Status</th>
+ <th scope="col">Comment</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-block', 'Block statement')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#sec-block', 'Block statement')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES5.1', '#sec-12.1', 'Block statement')}}</td>
+ <td>{{Spec2('ES5.1')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES3', '#sec-12.1', 'Block statement')}}</td>
+ <td>{{Spec2('ES3')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES1', '#sec-12.1', 'Block statement')}}</td>
+ <td>{{Spec2('ES1')}}</td>
+ <td>Initial definition. Implemented in JavaScript 1.0.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Kompatybilność_z_przeglądarkami">Kompatybilność z przeglądarkami</h2>
+
+<div class="hidden">
+<p>Tabela zgodności na tej stronie jest generowana na podstawie danych strukturalnych. Jeśli chcesz przyczynić się do danych, sprawdź https://github.com/mdn/browser-compat-data i wyślij nam prośbę o wycofanie.</p>
+</div>
+
+<p>{{Compat("javascript.statements.block")}}</p>
+
+<h2 id="Zobacz_także">Zobacz także</h2>
+
+<ul>
+ <li><a href="/pl/docs/Web/JavaScript/Referencje/Polecenia/while">while</a></li>
+ <li><a href="/pl/docs/Web/JavaScript/Referencje/Polecenia/if...else">if...else</a></li>
+</ul>