js中关于const在for in或者for of中的使用
const声明的变量在一个块级作用域中是不能够重新赋值。
那么在这个for循环当中使用会报错:
for(const i = 0;i<3;i++){
console.log(i);
}
在chrome浏览器中我们可以看到如下错误:
那么在for of或者for in当中使用就不会产生错误:
let arr = [1,2,3,4,5];
for(const value of arr){
console.log(value);
}
在chrome浏览器中我们可以看到数组的内容:
产生这样的原因主要在于:
for in 和for of它们两个都是一种严格的迭代语句,对于对象中的每一个属性值,有一个指定的语句块被执行。也就是每一次循环,都会产生一个块级作用域来完成每个变量的行为。我可以把上面的例子理解为如下:
{const value = arr[0];}
{const value = arr[1];}
...
{const value = arr[4];}
然而for循环并不会遍历对象的属性,每一次循环都是在同个块级作用域中进行,使用const声明就会报错。
所以在for in或者for of当中,推荐使用const来确保访问到的属性值不会被后续语句所改变。