为什么即使稍后在代码中定义局部变量,也无法访问全局变量

时间:2014-11-29 05:58:09

标签: javascript scope global-variables local-variables

为什么以下代码段会生成以下输出?

代码段:

var a = 10;
function(){
    console.log(a);
    var a = 5;
}

输出:

undefined

1 个答案:

答案 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,它是未定义的。