Подъем функции означает, что функции перемещаются в верхней части их области. То есть
function b() {
a = 10;
return;
function a() {}
}
будет переписана интерпретатором на это
function b() {
function a() {}
a = 10;
return;
}
Weird, eh?
. Кроме того, в этом случае
function a() {}
вел себя так же, как
var a = function () {};
Итак, по сути, это то, что делает код:
var a = 1; //defines "a" in global scope
function b() {
var a = function () {}; //defines "a" in local scope
a = 10; //overwrites local variable "a"
return;
}
b();
alert(a); //alerts global variable "a"