const声明一个只读的常量。一旦声明,常量的值就不能改变。
1.const和let一样只在当前代码块有效,且不能重复声明
![](https://img.haomeiwen.com/i16121796/2324e5ff6d989313.jpg)
2.作用域不会被提升
![](https://img.haomeiwen.com/i16121796/f685856e7a0652e3.jpg)
3.声明的常量必须被赋值
![](https://img.haomeiwen.com/i16121796/c7265d651130a890.jpg)
而let和const都是在声明所在的块级作用域内有效,let声明的变量可以改变,值和类型都可以改变,而const声明的变量一开始就需要初始化,不能留在后面在赋值。
![](https://img.haomeiwen.com/i16121796/0971112318ec053f.jpg)
理论来说const声明的变量的值不得改动,意思其实是变量指向的那个内存地址所保存的数据不得改动,上面代码中,常量zs储存的是一个地址,这个地址指向一个对象。不可变的只是这个地址,即不能把zs指向另一个地址,但对象本身是可变的,所以依然可以为其添加新属性,最后将 zs 指向另一个对象,就会报错TypeError: Assignment to constant variable.
如果想让定义的对象或数组的内部数据也不能够修改和改变,可以使用object.freeze(names)进行冻结,这样为对象添加新属性就不起作用。
![](https://img.haomeiwen.com/i16121796/a33144b46eb5c32a.jpg)
网友评论