众所周知,const是用来定义常量的,使用时必须初始化,只能在块级作用域中访问,且不可修改。如下:
const a; // 报错
const a = '1';
a = '2'; //报错
但某天写代码的时候突然发现,const定义的对象属性值居然可以改变:
const skuList = {
id = '001',
name = 'bag'
};
skuList.name = 'computer';
上面这段代码可以运行,skuList对象的age属性值可以被修改。查询文档后发现,对象是引用类型的,skuList对象中仅保存了对象的指针,const指向了一个内存空间,内存空间的内容可以改变,但如果const指向一个新的内存空间就会报错。如下:
const skuList = {
id = '001',
name = 'bag'
};
skuList = {
id = '001',
name = 'computer
} // 报错
skuList = {
id = '001',
name = 'bag'
} // 报错。即使不改变对象的值,只改变指针,也是不允许的
一个小小的case,记录一下