为什么`const`值在`for ... in`和`for ... of`循环中改变了?

Nar*_*hav 7 javascript const ecmascript-6

常量是块范围的,非常类似于使用let语句定义的变量.a的值constant不能通过重新赋值而改变,也不可能redeclared.

根据MDN ,a的值constant不能通过重新分配来改变,也不可能redeclared,因此内部for...infor...of工作方式如何?

const data = ['A', 'B', 'C', 'D'];

//Here const key is changed
for (const key in data) {
  console.log('key ',key);
}

//Here const value is changed
for (const value of data) {
  console.log('value ',value);
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*lms 8

循环的每次迭代都有自己的块范围.

 for(let i = 0; i < 10; i++)
   setTimeout(() => console.log(i), 1);
Run Code Online (Sandbox Code Playgroud)

这创建了10个单独的范围,这就是为什么它记录10个不同的数字.因此,您还可以在这些不同的范围中声明常量.

  • PHP演示了它可以被解释并具有常量常量.我确信其他语言也是如此.这些属性是无关的. (2认同)

Que*_*tin 5

你引用的材料的前三个词解释了。

常量是块作用域的

每次绕for循环时,都会到达干净块的顶部。你对它做的第一件事是在它里面创建一个常量。