【问题标题】:Access variables declared inside JavaScript switch statement from outside从外部访问在 JavaScript switch 语句中声明的变量
【发布时间】:2019-08-27 02:00:52
【问题描述】:

为什么

switch ("string") {
  case "string":
    const text = "Hello World!"
    break
}

console.log(text)

返回error: Uncaught ReferenceError: text is not defined ?

我不明白为什么变量文本返回未定义。

【问题讨论】:

  • 如您所知,const 是块作用域。由于switch 周围有括号,因此在它们之外无法访问const。但是,您可以在外部删除 let 并在 case 语句中分配其值
  • 您刚刚偶然发现了作用域变量是什么。只是为了让你可以玩,在开关外创建变量文本,并在开关内设置它的值。

标签: javascript variables scope switch-statement javascript-scope


【解决方案1】:

因为不在同一个范围内。像这样的东西应该可以工作:

let text
switch ("string") {
  case "string":
    text = "Hello World!"
    break
}

console.log(text)

【讨论】:

    【解决方案2】:

    使用 const 声明变量与 Block Scope 中的 let 类似。

    在本例中,块中声明的 x 与块外声明的 x 不同:

    var x = 10;
    // Here x is 10
    { 
      const x = 2;
      // Here x is 2
    }
    // Here x is 10
    

    https://www.w3schools.com/js/js_const.asp

    【讨论】:

      猜你喜欢
      • 2017-11-29
      • 1970-01-01
      • 2020-12-27
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      相关资源
      最近更新 更多