JavaScript Const关键词
ES6引入了 const 关键词,用于定义JavaScript中的新变量。通常,使用 var 关键词声明JavaScript变量。当您不希望在整个程序中更改变量的值时,使用 const 关键词声明变量。
唯一的区别在于,var用于普通变量声明,其值可以更改,而使用const关键词声明的变量值不能更改。
Const变量声明/初始化
以下是const变量声明和初始化的语法或简单代码。
<script>
const x = 16;
document.write("The value of const variable x = " + x);
</script>
输出
它将显示常量变量x的值,不会出现任何错误。
The value of const variable x = 16
现在,我们将讨论使用const定义的变量的一些属性。
属性
以下是 const 变量的属性:
- 使用const关键字定义的变量不能被重新分配,或其值不能被更改。
- const变量必须在声明时用变量名初始化,例如, const x=6;
- 你不能在声明后为变量提供值。
- const变量的值不能被更改。
- const变量具有块作用域。这意味着同一程序中的const变量可以通过相同的名称在不同的块中被重新分配并具有不同的值。
- const变量不能被提升,这意味着使用var关键字声明/初始化的变量不能使用const进行重新分配。
- 在JavaScript中,const只允许你修改数组的值,但不能更改对数组的引用。
- const变量只创建对值的引用。
- 对象的属性可以被更改,但对象的引用不能被更改。
示例
在这里,我们有一些用于实际解释不同属性的示例。
示例1: 通过这个示例,你将看到 const变量不能被重新分配 。
<script>
const x = 16;
x = 23; //Type Error
</script>
输出
它会生成一个 类型错误 因为不可能将值重新分配给一个常量变量。
JavaScript error: Uncaught TypeError: Assignment to constant variable. on line 3
示例 2: 在这个示例中,您将了解到 常量变量包含块范围 。
<script>
const x = 16;
{
const x = 23;
document.write("Block2: x = " + x); //23
{
const x = 74;
document.write( "<br> Block3: x = " + x); //74
}
{
const x = 49;
document.write("<br> Block4: x = " + x); //49
}
}
document.write("<br> Block1: x = " + x); //16
</script>
输出
通过执行上述代码,不会出现任何错误。它只会打印不同代码块中x的值,没有任何语法或类型错误。
Block2: x = 23
Block3: x = 74
Block4: x = 49
Block1: x = 16
示例3: 这个示例将描述常量变量不能被提升。
<script>
x = 16;
document.write(x);
const x; //Syntax Error
</script>
输出
它将会产生一个 语法错误 ,因为不允许重新声明一个变量。
JavaScript error: Uncaught SyntaxError: Missing initializer in const declaration on line 4
示例4: 这个示例将向您展示,在声明后无法对常量变量进行初始化。
<script>
const x;
x = 18; //Syntax Error
document.write(x);
</script>
输出
它会产生一个 语法错误 ,因为在const变量的声明之后不允许初始化。
JavaScript error: Uncaught SyntaxError: Missing initializer in const declaration on line 2
示例5: 在JavaScript中,const允许您仅修改数组的值,但不能更改对数组的引用。
<script type="text/javascript">
// initilize an const array
const nameArray = [" Aparna", " Manya", " Amayra", " Jahnavi"];
//display the value of array
document.write(nameArray.toString());
document.write("</br> </br>");
//change the value of array at index 2
nameArray [1] = " Krishna"; // possible
//Again, display the array with new values
document.write(nameArray.toString());
</script>
输出
在这里,您可以看到 Manya 名字已被替换为 Krishna 。尽管数组是使用 const 关键字声明的。所以,在两次输出中都会显示数组的所有值,没有任何错误。
Aparna, Manya, Amayra, Jahanvi
Aparna, Krishna, Amayra, Jahanvi
示例6: 在这个示例中,我们将向您展示const变量的值不能被改变或修改。
<script>
//declare and initialize an array of const
const employee = {
fname: "Annie",
lname: "Roy",
age: 22,
profession: "Web Developer"
};
document.write(employee);
// This can be done with const array
employee.fname = "Emmy";
employee.lname = "Jackson";
employee.Age = 24;
employee.profession = "QA Analyst";
document.write(employee);
// This cannot be possible with const array
/* const employee = {
"fname": "Emmy",
"lname": "Jackson",
"age": 24,
"profession": "QA Analyst"
} */
</script>
输出
在这里,您可以看到您不能通过相同的名称重新初始化对象的值,但是可以通过使用它们的引用来更改对象的值。
[object object] [object object]