diff options
Diffstat (limited to 'files/pl/web/javascript/referencje/polecenia/block/index.html')
| -rw-r--r-- | files/pl/web/javascript/referencje/polecenia/block/index.html | 160 |
1 files changed, 0 insertions, 160 deletions
diff --git a/files/pl/web/javascript/referencje/polecenia/block/index.html b/files/pl/web/javascript/referencje/polecenia/block/index.html deleted file mode 100644 index bbc5c7e4fb..0000000000 --- a/files/pl/web/javascript/referencje/polecenia/block/index.html +++ /dev/null @@ -1,160 +0,0 @@ ---- -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> |
