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

why is global variable not accessible even if local variable is defined later in code

本文关键字:代码 定义 局部变量 全局变量 访问 为什么      更新时间:2023-09-26

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

代码段:

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

输出:

undefined

因为变量被提升在顶部,在你的函数中,你已经声明了变量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 并且未定义。