bar();
var bar = function() {};
var someValue = 42;
test();
function test(data) {
if (false) {
goo = 1;
} else {
var goo = 2;
}
for(var i = 0; i < 100; i++) {
var e = data[i];
}
}// deklaracje var zostaną przeniesione tutaj
var bar, someValue; // ustawione domyślnie na 'undefined'
// deklaracje funkcji zostaną również przeniesione na górę
function test(data) {
// brak blokowego zasięgu spowoduje przeniesienie tutaj
var goo, i, e;
if (false) {
goo = 1;
} else {
goo = 2;
}
for(i = 0; i < 100; i++) {
e = data[i];
}
}
// powoduje błąd TypeError gdyż bar jest nadal 'undefined'
bar();
// przypisania nie zostają zmienione przez 'hoisting'
someValue = 42;
bar = function() {};
test();Przykład zaczerpnięty z
http://bonsaiden.github.io/JavaScript-Garden/pl/#-hoisting-wywindowanie-podnoszenie
Asynchronous JavaScript and XML