Przejdź do:

W języku JavaScript, funkcje oraz zmienne są windowane. Windowanie (hoisting) w JavaScripcie oznacza przeniesienie deklaracji na samą górę (do globalnego zasięgu lub do zasięgu funkcji).

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.

Naucz się więcej

Przykład

Zmienne:

foo = 2
var foo;

// można to rozumieć jako:

var foo;
foo = 2;

Funkcje:

hoisted(); // w consoli zobaczymy "foo"

function hoisted() {
  console.log("foo");
}

Tylko deklaracje są windowane

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

console.log(num); // zwróci undefined 
var num;
num = 6;

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

num = 6;
console.log(num); // zwróci 6
var num;

Dwa przykłady poniżej obrazują to samo zachowanie.

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

Odnośniki

Autorzy i etykiety dokumentu

Autorzy tej strony: Sousuke, pkubowicz, Miras
Ostatnia aktualizacja: Sousuke,