1.const
声明一个只读的常量。一旦声明,常量的值就不能改变。
const
一旦声明变量,就必须立即初始化,不能留到以后赋值
类似于const PI = 3.1415;
const
的作用域与let
命令相同:只在声明所在的块级作用域内有效。
const
命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。
本质上:
const
实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动
如果保存的是复合类型(对象或数组等),实际上不变的是变量指向的内存地址中保存的指针地址不变,而不是变量的内容不变;
则仍可以给对象或数组赋值,但不能改变其指针地址,如不能将一个数组的值赋值给定义数组;如下
const a = [];
a.push('Hello'); // 可执行
a.length = 0; // 可执行
a = ['Dave']; // 报错