在ES6中使用 const 来声明常量
首先什么是常量,常量就是相对于变量而言不可变动的量,111、'qqq' 这样都是常量。
const nub = 1; console.log(nub); //1
在使用 const 的时候有以下几点需要注意:
1、使用const声明常量一定要赋初始值,否则会产生语法错误
const a = 1; const b; //SyntaxError: Missing initializer in const declaration
2、常量的值不能修改
正是因为 const 声明的变量不可以改变值,所以只要声明变量就必须进行初始化,不可以等声明之后再另外进行赋值
const NUMBER = 'jojo'; NUMBER; NUMBER = 'hell'; //TypeError: Assignment to constant variable.
3、const 有块级作用域
和 let 一样const也有块级作用域,只在声明所在的块级作用域之内有效
{ const age = 17; } age; //ReferenceError: age is not defined
并且使用 const 声明的常量也不会提升,存在暂时性死区,只能在声明之后调用
console.log(age); const age = 17; //ReferenceError: Cannot access 'age' before initialization
4、对于数组和对象的元素修改,不算做对常量的修改,不会报错
对于复合类型的变量,变量名不指向数据,而是指向数据所在的地址。const 明亮只是保证变量名指向的地址不变,但是存储在这个地址里面的数据则有可能发生变化。
const tim = [1,2]; tim.push(3); console.log(tim); //[1, 2, 3]
上面这段代码中,常量 tim作为一个数组,是可以写入的并且不会报错,因为指向的地址并没有发生改变。但是如果将另外一个数组赋值给 tim 则会报错,因为这时候 tim指向的内存地址发生了改变。
参考资料:https://www.w3cschool.cn/ecmascript/ueqp1q5g.html
注意:声明数组或是对象的时候,使用 const 是比较稳妥的,可以避免常量变动错误。