var foo = 1;
(function () {
console.log(foo); // undefined(变量提升)
var foo = 2;
})();
var a = 1;
function b() {
a = 10;
return;
function a() {} // 函数声明提升,a 变成局部变量
}
b();
alert(a); // 1
第二个例子中,function a() {} 被提升到 b() 内部顶部,所以 a = 10 修改的是局部的 a,而非全局的。