const 定义的对象为什么可以修改?

937 阅读1分钟

考点:[数据类型,栈区,堆区]

  1. 基本数据类型: 基本数据类型[保存在栈区中]不可改变

    基本数据类型变量是保存在栈区中的,基本数据类型的值直接在栈内存中存储,值与值之间是独立存在的,修改一个变量不会影响其他的变量。

const c = 1;
c = 2; //报错
  1. 引用数据类型:引用数据类型[在栈区保存的地址]不可改变

    引用数据类型的值是同时保存在栈内存和堆内存的对象,栈区保存了对象在堆区的地址。

const a = {b:12}
a.b = 18 //可以修改
a = {b:18}//不可以修改

a 中保存的仅是对象的指针,这就意味着, const 仅保证指针不发生改变,修改对象的属性不会改变对象的指针,所以是被允许的。