根本用法
const 申明一个只读常量, 一旦申明, 不可扭转
const 一旦申明常量, 就必须立刻初始化, 不能当前赋值
const 作用域与 let 雷同:
- 只在申明所在的块级作用域内无效.
- 同样的也不存在变量晋升. 存在暂时性死区
- 只能在申明后应用
- 不可反复申明
实质
const 保障的不是是变量的值不能改变, 而是变量指向的内存地址不得改变, 因而这也就意味着对于复合数据类型而言外面的数据结构是可变的, 见代码:
如果想让对象解冻, 应该应用 Object.freeze 办法, 见代码:
除了将对象解冻, 对象的属性也应该解冻, 对象彻底解冻形式见代码:
顶层对象
let 命令,const 命令,class 命令申明的变量不属于顶层对象属性, 见代码: