我想知道javascript hoisting如何适用于全局变量。
假设我有以下代码段:
var a = 5;
function print(){
console.warn("a",a,b);
var a = 10;
b=5;
console.warn("a",a);
}
print();
在这种情况下,我收到错误“b未定义”。我想知道为什么Javascript提升不适用于全局变量。我试图寻找这个,但只得到变量提升的结果。有什么想法??
答案 0 :(得分:3)
var
语句被悬挂。函数声明已被提升。分配不会被提升(如果您将var
语句与分配(var foo = 1
)组合在一起,则声明部分将被提升,但分配不是。)