如何在 JavaScript 中使用 'const' 关键字?
我们在 JavaScript 中使用const关键字来声明变量,这些变量的值只能在声明时初始化。它与 JavaScript 中提供的其他关键字(即var和let)声明变量的功能类似。const 是常量的缩写,表示存储在变量中的值是不可更改的。
JavaScript 中的 const 关键字
它用于在 JavaScript 中声明变量。使用 const 创建的变量遵循某些规则。
该变量是块级作用域的。这意味着变量的作用域(生命周期)取决于其声明的位置。这遵循与let关键字相同的规则。
const 变量的值只能在声明时提供。这是因为一旦声明,存储在 const 变量中的值就不能更改。
但是,使用 const 关键字声明的数组或对象可以修改。
任何尝试在初始化之前修改或访问 const 变量都会导致引用错误。如果声明行尚未执行,则该变量被称为处于暂时死区 (TDZ)。此行为不同于 var 关键字。
const 关键字对变量持有只读权限。这意味着,在底层,变量而不是存储在该变量中的值被限制为不能更改。任何尝试写入变量都会因变量没有写入权限而引发错误。
语法
const NUM = 10;
这会创建一个值为 10 的常量变量NUM。注意,使用大写字母编写 const 变量是一种常见约定。这样做是为了强调该变量是常量,不应修改。
让我们看一个 const 关键字的工作示例。
示例 1
在这里,我们将创建一个 const 变量,然后尝试更改其值。这将抛出一个“对常量变量的赋值”错误,我们将使用 try-catch 块来处理该错误。
让我们看看代码:
<!DOCTYPE html> <html> <body> <div id="result"></div> </body> <script> const NUM = 10; var text = ""; for (let NUM = 0; NUM < 10; NUM++) { text += NUM + ","; } text += "<br>" try { NUM = 20; } catch (err) { text += err.message; } document.getElementById("result").innerHTML = text; </script> </html>
在上面的代码中,有两件事需要注意。一个是 const 变量的块级作用域特性。这让我们可以使用相同的名称 NUM 定义另一个变量,而不会发生冲突。这是因为 let 创建块级作用域变量。因此,for 循环内部的 NUM 是一个非 const 变量,其标识符名称与 const 变量相同。循环内部创建的 NUM 与全局作用域的 const 变量独立工作,因为它是声明在每个块之外的。
需要注意的第二件事是当我们尝试重新初始化 const 变量 NUM 的值时抛出的错误。这符合 const 的工作方式。
注意,如果我们尝试使用 var 关键字声明一个与 const 变量名称相同的变量,则会抛出错误,因为使用 var 关键字声明的变量具有全局作用域,这会导致冲突。
另外注意,如果我们尝试声明一个变量而不初始化它,则会抛出一个“const 声明中缺少初始化程序”错误。
const 关键字通常用于声明数组和对象。这是因为它不允许重新分配对象变量,但同时允许灵活地修改对象的属性。
以下是如何在 JavaScript 中使用 const 关键字与对象的示例。
示例 2
在这里,我们将使用 const 关键字创建一个具有两个属性 name 和 age 的对象。然后,我们尝试修改 age 属性。这将正常工作,因为我们正在处理对象而不是原始变量。让我们看看代码:
<!DOCTYPE html> <html> <body> <div id="result"></div> </body> <script> var text = ""; const student = { name : "Jane Doe", age : 27 } student.age = 29; text += student.name + "<br>"; text += student.age + "<br>"; document.getElementById("result").innerHTML = text; </script> </html>
在上面的代码中,正如输出中所看到的,age 属性可以成功修改。
结论
const 关键字可以帮助防止意外的用户更改您的变量,以及跟踪在整个程序执行过程中保持不变的值。