JavaScriptconst关键字简介
ES6提供了一种使用const关键字声明常量的新方法。const关键字创建对值的只读引用。
constCONSTANT_NAME=value;
按照惯例,常量标识符是大写的。
与let关键字一样,const关键字声明块作用域变量。但是,由const关键字声明的块范围变量不能重新分配。
let关键字声明的变量是可变的。这意味着我们可以随时更改它们的值,如以下示例所示:
leta=10;
a=20;
a=a+5;
console.log(a);//25
但是,由const关键字创建的变量是“不可变的”。换句话说,我们不能将它们重新分配给不同的值。
如果我们尝试重新分配由const关键字声明的变量,我们将收到如下所示的TypeError:
constRATE=0.1;
RATE=0.2;//TypeError
与let关键字不同,我们需要将值初始化为const关键字声明的变量。
以下示例由于缺少const变量声明中的初始化程序而导致SyntaxError:
constRED;//SyntaxError
JavaScript常量和对象
const关键字确保它创建的变量是只读的。但是,这并不意味着const变量引用的实际值是不可变的。例如:
constperson={age:20};
person.age=30;//OK
console.log(person.age);//30
即使person变量是一个常量,我们也可以更改其属性的值。
但是,我们不能像这样为person常量重新分配不同的值:
person={age:40};//TypeError
如果我们希望person对象的值是不可变的,则必须使用Object.freeze()方法将其冻结:
constperson=Object.freeze({age:20});
person.age=30;//TypeError
注意Object.freeze()是浅的,这意味着它可以冻结对象的属性,而不是属性引用的对象。
例如,