全局变量的javascript调用

全局变量的javascript调用,javascript,global-variables,scope,hoisting,Javascript,Global Variables,Scope,Hoisting,我想知道javascript如何处理全局变量 假设我有以下代码片段: var a = 5; function print(){ console.warn("a",a,b); var a = 10; b=5; console.warn("a",a); } print(); 在这种情况下,我得到错误“b未定义”。我想知道为什么Javascript不适用于全局变量。我试图寻找这一点,但得到的结果只是变量提升。有什么想法吗?var声明被挂起。功能声明已悬挂。未挂起赋值(

我想知道javascript如何处理全局变量

假设我有以下代码片段:

var a = 5;
function print(){
    console.warn("a",a,b);
    var a = 10;
    b=5;
    console.warn("a",a);
}
print();

在这种情况下,我得到错误“b未定义”。我想知道为什么Javascript不适用于全局变量。我试图寻找这一点,但得到的结果只是变量提升。有什么想法吗?

var
声明被挂起。功能声明已悬挂。未挂起赋值(如果将
var
语句与赋值(
var foo=1
)组合,则声明部分挂起,但赋值未挂起)。

基本上:
b=5未被提升。只有
var
语句有。所以当我说b=5时,它有一个全局范围,所以为什么它不是从全局范围中获取的。thx很多时候,我学到了关于JavaScript的一个新东西:-)我也看了一下:所以当我说b=5时,它有一个全局范围,所以为什么它不是从全局范围中获取的。@Mayank:整个
b
变量没有被提升。这意味着,在控制台发出警告(“a”,a,b)时
b
尚不存在。