【问题标题】:does const create a local scope just like let? [duplicate]const 是否像 let 一样创建本地范围? [复制]
【发布时间】:2019-05-07 21:22:18
【问题描述】:

说我有这个:

for(const v of [1,2,3]){
  console.log(v);
}

const v = 5;
console.log(v);

这是否会像 let 那样为 v 创建一个唯一的本地范围?以上运行良好。

这失败了,正如我们可能预期的那样:

for(const v of [1,2,3]){
  console.log(v);
}

console.log(v);  // v is not defined, but if we used var instead of const, it would be defined

【问题讨论】:

  • 是的,constlet 的块范围规则相同
  • 你不能声明例如,但工作方式相同(除了你不能重新分配给那个变量)for (const i = 0 ; i < ...; i++) { ... }
  • 在发布问题之前,请进行适当的研究(正如您应该做的那样),它会给您答案:google.com/search?q=const+local+scope

标签: javascript


【解决方案1】:

是的,确实如此 - const 是块范围的常量声明关键字,这意味着在您的第二个示例中,v 仅在 for 循环的 {} 内定义。将其更改为 var - 具有函数范围(它仅存在于其封闭函数内) - 意味着它可以在 for 循环之外访问(因为它不是函数)。

【讨论】:

    【解决方案2】:

    是的,bot let 和 const 是块作用域的。请参阅this 以获得有关 let 和 const 范围的清晰图片。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-07
      • 1970-01-01
      • 2014-07-23
      • 1970-01-01
      相关资源
      最近更新 更多