--- 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>