aboutsummaryrefslogtreecommitdiff
path: root/files/pl/glossary/hoisting/index.html
blob: cc9b2babd6bbae987ee620a64c408290a73683f6 (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
---
title: Hoisting
slug: Glossary/Hoisting
translation_of: Glossary/Hoisting
---
<p>W języku {{Glossary("JavaScript")}}, {{Glossary("Function", "funkcje")}} oraz {{Glossary("Variable", "zmienne")}} są <strong>windowane</strong>. Windowanie (hoisting) w JavaScripcie oznacza przeniesienie deklaracji na samą górę (do globalnego {{Glossary("scope", "zasięgu")}} lub do zasięgu funkcji).</p>

<p>Oznacza to, że możesz użyć funkcji lub zmiennej przed jej zadeklarowaniem lub innymi słowy: funkcje lub zmienne mogę być deklarowane po ich użyciu.</p>

<h2 id="Naucz_się_więcej">Naucz się więcej</h2>

<h3 id="Przykład">Przykład</h3>

<p>Zmienne:</p>

<pre class="brush: js">foo = 2
var foo;

// można to rozumieć jako:

var foo;
foo = 2;</pre>

<p>Funkcje:</p>

<pre class="brush: js">hoisted(); // w consoli zobaczymy "foo"

function hoisted() {
  console.log("foo");
}</pre>

<h3 id="Tylko_deklaracje_są_windowane">Tylko deklaracje są windowane</h3>

<p>W języku JavaScript tylko deklaracje są windowane, nie inicjalizacje. Jeśli zmienna zostanie zadeklarowana i zainicjalizowana po jej użyciu, wartość zmiennej będzię niezdefiniowana (undefined).</p>

<pre class="brush: js">console.log(num); // zwróci undefined
var num;
num = 6;</pre>

<p>Jeśli zadeklarujesz zmienną po tym jak zostanie użyta, ale zainicjalizujesz jej wartość przed tym, owa wartość zostanie zwrócona:</p>

<pre class="brush: js">num = 6;
console.log(num); // zwróci 6
var num;</pre>

<p>Dwa przykłady poniżej obrazują to samo zachowanie.</p>

<pre><code>var x = 1; // inicjalizacja x
console.log(x + " " + y); // '1 undefined'
var y = 2; // inicjalizacja y

// Powyższy przykład jest rozumiany jako:
var x = 1; // inicjalizacja x
var y; // deklaracja y
console.log(x + " " + y); // '1 undefined'
y = 2; // inicjalizacja y</code></pre>

<h3 id="Odnośniki">Odnośniki</h3>

<ul>
 <li><a href="https://www.udemy.com/understand-javascript/">JavaScript: Understanding the Weird Parts</a> - Udemy.com Course</li>
 <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/var">var statement</a> - MDN</li>
 <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/function">function statement</a> - MDN</li>
</ul>