Constants是块作用域的,就像使用let语句定义的变量一样。
constant
的值不能通过重新分配进行更改,而且不能redeclared
。
根据MDN constant
的值无法通过重新分配进行更改,并且不能redeclared
< / strong>,所以在for...in
和for...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);
}
&#13;
答案 0 :(得分:7)
循环的每次迭代都有自己的块范围。
for(let i = 0; i < 10; i++)
setTimeout(() => console.log(i), 1);
这创建了10个单独的范围,这就是为什么它会记录10个不同的数字。因此,您还可以在这些不同的范围中声明常量。
答案 1 :(得分:4)
您引用的材料的前三个字解释了。
常量是块范围的
每次绕过for
循环,都会转到一个干净的块的顶部。你要做的第一件事就是在里面创建一个常量。
答案 2 :(得分:1)
在for-of-loop
中,每个迭代都会声明这些常量(在独立范围内),而在for-loop
中你重新使用变量,所以你不会成为能够在声明后重新赋值。
for-loop
const data = ['A', 'B', 'C', 'D'];
for (const i = 0; i < data.length; i++) {
console.log('value ',data[i]);
}
&#13;