【问题标题】:Block scope in js [duplicate]js中的块范围[重复]
【发布时间】:2017-01-12 11:55:41
【问题描述】:

我在玩,发现了有趣的东西

var x = "x";
function a (){
    var x = "y";
  if(1){
    var x = "g";
    alert(x);
  }
  alert(x)
}

a()

为什么会输出 "g" , "g" 代替 "g" , "y" ? if 创建了另一个块作用域,x 是其中的局部变量,这意味着当我离开 if 块时,应该打印外部 x(等于 "y")。

【问题讨论】:

  • 请用谷歌搜索。这已经回答了很多次了。同样对于块范围,使用let。用var 声明的变量被提升
  • JS 没有块作用域。它具有功能范围。

标签: javascript scope


【解决方案1】:

原因是变量 x 具有函数级别的作用域,并且为变量设置的最新值是“g”。所以你用相同的 x "g" 值警告了两次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 2016-02-27
    相关资源
    最近更新 更多