【问题标题】:'const' scope in for loop JavaScript [duplicate]for循环JavaScript中的'const'范围[重复]
【发布时间】:2022-02-08 22:01:34
【问题描述】:

在下面的代码中,ele 是否仅可用于循环的单个迭代?

for (var i=0; i<3; i++){
  const ele = i
  console.log(ele)
}

我想应该是这样的,否则会有一个

Syntax Error: Identifier 'ele' has already been declared

每次循环在第一次之后迭代。

我找不到使用console.log() 确认的方法,所以寻找一个具体的答案。

编辑:澄清一下,我知道ele 仅在 for 循环中有效。我的问题特别是是否在此循环的每次迭代中都“重新实例化”了范围。它看起来确实像,但我还没有在任何地方明确地听到或读过它。

【问题讨论】:

  • developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…: “常量是块范围的,很像使用 let 关键字声明的变量。”
  • 您的示例代码运行良好,并显示ele 在每次迭代时都会更新,而不仅仅是第一次。并且每次迭代都会获得一个新的 ele 实例,因为每个循环都会创建一个新块。
  • 只是为了确认块作用域是什么,这段代码是完全有效的,{const x=1; {const x=2; { const x = 3; }}} 因为每个const x 都在一个单独的块作用域中。 IOW 每当您在 {} 中看到代码(包括 for 循环)时,您就有了一个新的块作用域。

标签: javascript


【解决方案1】:

为什么不直接使用console.log(i)

howwei 认为你应该尝试使用 var 或 let 而不是 const

【讨论】:

    猜你喜欢
    • 2016-11-02
    • 2020-03-28
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 2018-12-28
    • 1970-01-01
    • 2018-11-04
    相关资源
    最近更新 更多