全局变量的 JavaScript 提升

May*_*ank 6 javascript scope global-variables hoisting

我想知道 javascript 提升如何用于全局变量。

假设我有以下代码片段:

var a = 5;
function print(){
    console.warn("a",a,b);
    var a = 10;
    b=5;
    console.warn("a",a);
}
print();
Run Code Online (Sandbox Code Playgroud)

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

Que*_*tin 4

var声明被悬挂。函数声明被提升。赋值不会提升(如果将var语句与赋值 ( var foo = 1) 组合,则声明部分会提升,但赋值不会提升)。