ES6 const命令特性

一、“不可”改变

  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属于简单数据类型,在内存中存储如下图:


ES6 const命令特性_第1张图片
数据在内存中的存储

  因此对于简单数据类型的数据,值就保存在变量指向的内存地址中,因此不可改变。而对于复杂数据类型保存的是一个指针,const只保证指针固定,因此我们可以修改指针指向的内容。故:

a = 1;//报错
foo.pro = 456;//成功
foo = bar;//报错

二、一旦声明就必须初始化

  const声明后必须立即进行初始化,不可留到以后赋值

const foo;//报错

三、作用域&&变量提升&&重复声明

  这部分特性均与let保持一致

你可能感兴趣的:(ES6 const命令特性)