在开始使用JavaScript编程语言之前,你必须收集一些关于变量和常量等基本术语的知识。在JavaScript中**,常量**是用 "const"关键字创建的。在声明之后,一个JavaScript常量的值不能被修改,使其成为 "不可改变的"。它们也是 "块域",所以JavaScript限制了它们在创建块之外的访问。
这篇文章将讨论JavaScript常量的声明,它们的块范围,常量变量的重新分配,常量数组,常量对象,以及冻结常量对象的相关程序。那么我们开始吧!
JavaScript常量的声明
JavaScript常量是不可改变的类型,这意味着它们的值在创建后不能被修改。要在JavaScript中创建常量,你必须使用 "const"关键字,并记住常量的 "名称"应该用大写字母指定。
const CONSTANT1= "value";
如果常量的名称包括一个以上的单词,那么在单词之间使用下划线"_"。
const NEW_CONSTANT= "value";
JavaScript常量的区块范围
用 "const"关键字声明的JavaScript常量与用 "let"关键字创建的变量具有相同的范围。因此,在一个代码块中声明的JavaScript常量只能在该代码块中使用,不能在该代码块之外使用。
例如,我们将在代码块**{}**中创建一个名为 "x"的JavaScript常量。
{
const x = 5;
alert(x);
}
然后,我们将尝试访问给定代码块之外的常量 "x"。
console.log(x);
添加的代码块将执行并在一个警报框中显示 "x"常数的值。

当执行控制从添加的代码块中出来时,"console.log()"方法将尝试访问常量 "**x",**这将导致以下 "参考错误"。

JavaScript常量变量的重新赋值
如前所述,使用 "const"关键字创建的变量属于 "不可变"类型,这意味着我们不能对其进行重新赋值操作。
在下面的例子中,当我们试图对变量 "age"重新赋值时,会在控制台窗口显示一个 "TypeError"。
const age= 30;
age= 30;

JavaScript常量对象
当使用 "const"关键字创建一个JavaScript常量对象时,其不可改变的数据类型限制了对整个对象值的重新分配。不过,你还是可以修改对象的属性值。
例如,我们将声明一个名为 "雇员"的常量对象,其属性如下。
const employee= {
age: 30,
name: "Alex"
};
console.log(employee);
注意,"employee"对象是 "不可变"的数据类型,我们正在给它的 "name"属性重新赋值。
employee.name= "Max";
console.log("After changing the employee.name property value");
console.log(employee);
给出的输出结果表明,"employee.name"属性值被更新为 "Max"。

上述例子的执行证明,尽管一个对象在 "const"关键字的帮助下变得 "不可改变",但它仍然允许你重新分配属性值。
当需要限制JavaScript常量对象更新现有属性或添加新属性时,你可以 "冻结"一个对象。
使用Object.freeze()方法冻结一个JavaScript常量对象
**Object.freeze()**方法是用来冻结一个已经声明的常量对象的。当一个对象被冻结时,它可以防止删除现有的对象属性,增加新的属性,更新现有属性的可枚举性、可写入性和可配置性。此外,在冻结相关对象后,你不能改变对象的原型和现有属性的值。
在JavaScript中使用Object.freeze()的语法
Object.freeze(obj)
这里,"obj"代表JavaScript常量对象,它将在 "Object.freeze()"方法的帮助下被冻结。
例子。如何在JavaScript中使用Object.freeze()方法来冻结一个对象
首先,我们将使用 "Object.freeze()"方法来冻结 "employee "这个常量对象。
Object.freeze(employee);
注意,在冻结 "employee"对象时,"employee.age"的值是 "30",而 "employee.name"被设置为 "Max"。

在下一步,我们将验证 "雇员"对象是否被冻结。为此,JavaScript提供了 "Object.isFrozen()"内置方法,它接受一个JavaScript常量 "object"作为参数,如果传递的对象被冻结,则返回 "true",否则 "Object.isFrozen()"方法的返回情况将被设置为 "false"。
Object.isFrozen(employee);
输出

Object.isFrozen()"方法返回的值是 "true",这表明 "employee"对象被成功冻结了。现在我们将尝试把 "employee.name"的属性值更新为 "Paul"。
employee.name= "Paul";
console.log(employee);
如果你是在 "非严格"模式下,那么指定的更新值的操作将无声无息地失败,被冻结的 "employee"对象将不会修改原来的值。

JavaScript常量数组
与JavaScript常量对象类似,常量数组也不可能进行重新赋值的操作。请看下面给出的例子来理解所述的概念。
首先,我们将使用 "const"关键字声明一个JavaScript数组 "seasons"。这个 "季节"数组包括一个元素,即 "春天"。
const seasons= ['spring'];
然后,我们将借助 "array.push()"方法,把另一个元素 "秋天"推到 "季节"数组中。
seasons.push('autumn');
console.log(seasons);
由于JavaScript常量允许向数组添加元素,所以指定的操作将被成功执行。

然而,我们不能重新分配 "seasons"数组。这样做的时候,你会遇到一个 "TypeError"。
seasons = [];
输出

这就是与JavaScript常量有关的所有基本信息。你可以根据自己的喜好来进一步处理它。
总结
const"关键字用于定义 JavaScript常量变量和数组,这些变量和数组是块域的,创建后不能被修改。然而,对于常量对象来说,你必须利用JavaScript Object.freeze()方法来冻结它们,以限制对已经创建的JavaScript常量对象的操作。这篇文章讨论了JavaScript常量的声明,它们的块范围,常量变量的重新分配,常量数组,常量对象,以及冻结常量对象的相关程序。