Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么即使在代码后面定义了局部变量,也无法访问全局变量_Javascript_Scope_Global Variables_Local Variables - Fatal编程技术网

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

Javascript 为什么即使在代码后面定义了局部变量,也无法访问全局变量,javascript,scope,global-variables,local-variables,Javascript,Scope,Global Variables,Local Variables,为什么下面的代码段会生成下面的输出 代码段: 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

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

代码段:

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

因为变量被提升到顶部,而在您的函数中,您声明了变量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,它是未定义的。

因为变量被提升到顶部,而在您的函数中,您声明了变量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,它是未定义的。

因为变量被提升到顶部,而在您的函数中,您声明了变量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,它是未定义的