为什么以下代码段会生成以下输出?
代码段:
var a = 10;
function(){
console.log(a);
var a = 5;
}
输出:
undefined
答案 0 :(得分:3)
因为变量在顶部和函数中被提升,所以你声明了变量var a = 5,它与下面的相同:
var a = 10;
function(){
var a; // a = undefined
console.log(a);//a is not defined so outputs undefined
a = 5;
console.log(a);//a is now 5 so outputs 5
}
在你的函数范围中,var被声明它不会看到全局变量,而是局部变量,即var a,它是未定义的。