var foo = 1;
function(){
console.log(foo);
var foo = 2;
console.log(foo);
}
答案:
输出undefined和2.
上面的代码相当于:
var foo = 1;
function(){
var foo;
console.log(foo);//undefined
foo = 2;
console.log(foo);//2
}
函数声明与变量声明会被JavaScript引擎隐式的提升到当前作用域的顶部,但是只提升名称不会提升赋值部分。