【发布时间】: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