const声明只限制他指向变量的引用,所以当const变量引用的是对象时,对象的内部属性是可以修改的。
对于for循环,因为for循环每次会更新迭代变量,所以不能用const声明迭代变量.
但是用const声明一个不会被for循环改变的变量是可以的,每次迭代只是创建一个新变量.
这对for in和for of循环特别有意义:
for( const value of [1,2,3,4,5]) {
console.log(value);
}
产生这样的原因主要在于:
for in 和for of它们两个都是一种严格的迭代语句,对于对象中的每一个属性值,有一个指定的语句块被执行。也就是每一次循环,都会产生一个块级作用域来完成每个变量的行为。我可以把上面的例子理解为如下:
{const value = arr[0];}
{const value = arr[1];}
...
{const value = arr[4];}
然而for循环并不会遍历对象的属性,每一次循环都是在同个块级作用域中进行,使用const声明就会报错。
所以在for in或者for of当中,推荐使用const来确保访问到的属性值不会被后续语句所改变。
然而for循环并不会遍历对象的属性,每一次循环都是在同个块级作用域中进行,使用const声明就会报错。
所以在for in或者for of当中,推荐使用const来确保访问到的属性值不会被后续语句所改变。
声明时,const优先,let次之,使用const强制声明变量为不可变时,可以提前发现不合法的赋值操作。
标签:const,变量,value,循环,let,属性,声明,随记 From: https://www.cnblogs.com/simpleName/p/17034459.html