全局变量的javascript提升



我想知道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)结合,则声明部分会被挂起,但赋值不会)。

您的代码被重新解释为:

function print(){
    var b
    console.warn("a",a,b); // b is not assigned yet so it's undefined.
    var a = 10;
    b=5;
    console.warn("a",a);
}

相关内容

  • 没有找到相关文章

最新更新