Javascript 简明教程
JavaScript - Constants
JavaScript Constants
JavaScript constants 是在程序执行过程中其值保持不变的变量。您可以使用 const 关键字声明常量。
const 关键字在 JavaScript 的 ES6 版本中引入,与 let 关键字一起使用。const 关键字用于定义具有 constant reference 的变量。用 const 定义的变量不能 redeclared , reassigned 。const 声明具有块和函数范围。
Declaring JavaScript Constants
如果使用 const 关键字声明变量,则始终需要在声明时分配一个值。
const x = 10; // Correct Way
在任何情况下,都不能不初始化而使用 const 关键字声明变量。
const y; // Incorrect way
y = 20;
Block Scope
使用 const 关键字声明的 JavaScript 变量具有块级作用域。这意味着在块级作用域外,它被视为不同的变量。
在以下示例中,在块级作用域内声明的 x 与在块级作用域外声明的 x 不同。因此,可以在块级作用域外 redeclare 同一个变量。
{
const x = "john";
}
const x = "Doe"
但在同一个块级作用域内 can’t redeclare const 变量。
{
const x = "john";
const x = "Doe" // incorrect
}
Constant Arrays and Objects in JavaScript
可以使用 const 关键字声明数组和对象,但在数组和对象声明中有一点小技巧。
使用 const 关键字的变量保持常量引用,而不是常量值。因此,您可以更新使用 const 关键字声明的同一数组或对象,但不能将新数组或对象的引用重新分配给该常量变量。
Example (Constant Arrays)
在以下示例中,我们使用 const 关键字定义名为“arr”的数组。之后,我们更新数组中第一个元素并插入“fence”字符串作为数组的末尾元素。
在输出中,您可以看到它打印了更新后的数组。
<html>
<head>
<title> Consant Arrays </title>
</head>
<body>
<script>
// Defining the constant array
const arr = ["door", "window", "roof", "wall"];
// Updating arr[0]
arr[0] = "gate";
// Inserting an element to the array
arr.push("fence");
//arr = ["table", "chair"] // reassiging array will cause error.
// Printing the array
document.write(arr);
</script>
</body>
</html>
执行以上代码时,将会产生以下结果 −
gate,window,roof,wall,fence
Example (Constant Objects)
在以下示例中,我们用 const 关键字创建“obj”对象。接下来,我们更新对象的“animal”属性并在对象中插入“legs”属性。在输出中,代码将会打印已更新的对象。
<html>
<head>
<title> Constant Objects </title>
</head>
<body>
<script>
// Defining the constant object
const obj = {
animal: "Lion",
color: "Yellow",
};
// Changing animal name
obj.animal = "Tiger";
// Inserting legs property
obj.legs = 4;
// Printing the object
document.write(JSON.stringify(obj));
// obj = { name: "cow" } // This is not possible
</script>
</body>
</html>
它将产生以下结果 −
{"animal":"Tiger","color":"Yellow","legs":4}
No Const Hoisting
用 const 关键字定义的变量不会提升到代码顶部。
在下面的示例中,在定义 const 变量 x 之前就对其进行了访问。它将导致一个错误。我们可以使用 try-catch 语句捕获该错误。
<html>
<body>
<script>
document.write(x);
const x = 10;
</script>
</body>
</html>
以下是使用 const 关键字声明的变量的一些其他属性。
-
Block scope.
-
它不能在同一作用域中重新声明。
-
使用 const 关键字声明的变量不能提升到代码顶部。
-
常量变量值是一个基本值。