一、“不可”改变
const 声明一个只读的变量。一旦声明,常量的值就不可改变:
const foo = 3.5;
foo = 4;//报错
不可改变的本质:变量指向的那个内存地址不可改变,比如我们定义foo、bar对象和a、b两个数值类型变量:
const foo = {
foo.pro = 123;
}
const bar = {
bar.pro = 456;
}
const a = 10;
const b = 20;
对象属于复杂数据类型,number属于简单数据类型,在内存中存储如下图:
数据在内存中的存储
因此对于简单数据类型的数据,值就保存在变量指向的内存地址中,因此不可改变。而对于复杂数据类型保存的是一个指针,const只保证指针固定,因此我们可以修改指针指向的内容。故:
a = 1;//报错
foo.pro = 456;//成功
foo = bar;//报错
二、一旦声明就必须初始化
const声明后必须立即进行初始化,不可留到以后赋值
const foo;//报错
三、作用域&&变量提升&&重复声明
这部分特性均与let保持一致
网友评论