【问题标题】:javascript hoisting for global variable全局变量的javascript提升
【发布时间】:2015-01-01 09:45:54
【问题描述】:

我想知道 javascript 提升如何对全局变量起作用。

假设我有以下代码 sn-p:

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

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

【问题讨论】:

  • 基本上:b=5; 不会被提升。只有var 语句可以。
  • 所以当我说 b=5 的时候,它有一个全局作用域,那么为什么不取自全局作用域呢。
  • 非常感谢,我学到了关于 JavaScript 的新知识 :-) 我也看过这个:w3schools.com/js/js_hoisting.asp

标签: javascript global-variables scope hoisting


【解决方案1】:

var 语句被提升。函数声明被提升。不会提升分配(如果将 var 语句与分配 (var foo = 1) 组合在一起,则声明部分会提升,但不会提升分配)。

【讨论】:

  • 所以当我说 b=5 的时候,它有一个全局作用域,那么为什么不取自全局作用域呢。
  • @Mayank:整个b 变量没有被提升。这意味着,在console.warn("a",a,b); 的时候,b 还不存在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-27
  • 2014-02-01
  • 2015-06-22
  • 1970-01-01
  • 1970-01-01
  • 2019-06-27
相关资源
最近更新 更多