ECMAScript 6 标准终于提供了const关键字。用来声明常量。
conts 常量:一旦被设定后就不能更改。
因此,每个通过conts声明的常量必须进行初始化(声明时就要赋值)。
const NUM = 30;
在声明常量时,通常会用大写字母来命名。
并不是硬性规定,只是在看到用大写字母的时候,能快速联想到是常量。这样容易与变量区分开。
conts 与 let 声明的都是块级标识符,所以常量也只在当前代码块内有效,一旦执行到块外会立即被销毁。
常量同样也不会被提升至作用域顶部,也就是说不会被预解析。
如果在声明常量前,用let或者var声明了同名的变量,在声明同名的常量时就会报错。
var a = 1;
// 这句语句会报错
const a = 2;
不管在严格模式还是在非严格模式下,都不可以为conts定义的常量再赋值,否则也会报错。
const NUM = 10;
// 这句语句会报错
NUM = 15;
但有一个例外。如果声明的常量是一个对象,或者指向一个对象,则对象中的值是可以被修改的。
const PERSON = {
name: "Carrot"
};
// 对象中的值可以被修改PERSON.name = "Rabbit";
// 对象自身则不可以修改,否则会报错// 下面语句会报错
PERSON = {
name: "Fox"
};
PERSON 的值是一个包含一个属性的对象,改变 PERSON.name 的值,不会报错,因为修改的是 PERSON 包含的值。如果直接给 PERSON 复制,即要改变 PERSON 的绑定,就会报错。
常量只声明不赋值,会报错!!!
常量重复声明,会报错!!!
const声明不允许修改绑定,但允许修改绑定的值。