一、基本用法
- 语法:
const 标识符=初始值;
注意:const一旦声明变量,就必须立即初始化,不能留到以后赋值
- 规则:
1.const 声明一个只读的常量,一旦声明,常量的值就不能改变
2.const 其实保证的不是变量的值不变,
而是保证变量指向的内存地址所保存的数据不允许改动
- 重点
不可变值(相当于常量):简单类型的数据(数值、字符串、布尔值)
数据结构可变: 复合类型的数据(主要是对象和数组)
二、本质
- const实际上保证的,并不是变量的值不得改动,
而是变量指向的那个内存地址所保存的数据不得改动。
1.对于简单类型的数据(数值、字符串、布尔值),
值就保存在变量指向的那个内存地址,因此等同于常量。
2.对于复合类型的数据(主要是对象和数组),
变量指向的内存地址,保存的只是一个指向实际数据的指针,
const只能保证这个指针是固定的(即总是指向另一个固定的地址),
至于它指向的数据结构可变化。
三、示例
1)数组
const arr=[]
console.log(arr) // []
arr.push('wyt')
console.log(arr) //['wyt']
2)对象
//添加name属性
const obj = {}
obj.name = "wyt"
console.log(obj);
-
冻结对象
const foo = Object.freeze({}); // 常规模式时,下面一行不起作用; // 严格模式时,该行会报错 foo.prop = 123;
四、规则
- 同let一样(若忘记,可以看ES6-let那篇文章)
- 同一个作用域内不允许重复声明
- 不存在变量提升即必须先声明再使用,但是const必须赋初始值
- 暂时性死区