JavaScript - 常量



JavaScript 常量

JavaScript 常量是指在程序执行期间其值保持不变的变量。可以使用 const 关键字声明常量。

const 关键字是在 ES6 版本的 JavaScript 中引入的,与 let 关键字一起使用。const 关键字用于定义具有常量引用的变量。使用 const 定义的变量不能被重新声明重新赋值。const 声明具有块级作用域和函数作用域。

声明 JavaScript 常量

如果使用 const 关键字声明变量,则始终需要在声明时赋值。

const x = 10; // Correct Way

在任何情况下,都不能在没有初始化的情况下使用 const 关键字声明变量。

const y; // Incorrect way
y = 20; 

不能重新赋值

不能更新使用 const 关键字声明的变量的值。

const y = 20; 
y = 40; // This is not possible

块级作用域

使用const关键字声明的 JavaScript 变量具有块级作用域。这意味着同一个变量在块外被视为不同的变量。

在下面的示例中,在块内声明的 x 与在块外声明的 x 不同。因此,可以在块外重新声明同一个变量

{
const x = "john";
}
const x = "Doe"

但是,不能在同一个块内重新声明 const 变量。

{
const x = "john";
const x = "Doe" // incorrect
}

JavaScript 中的常量数组和对象

可以使用 const 关键字声明数组和对象,但数组和对象的声明有一些细微差别。

使用 const 关键字声明的变量保持常量引用,但不保持常量值。因此,可以更新使用 const 关键字声明的相同数组或对象,但不能将新数组或对象的引用重新赋值给常量变量。

示例(常量数组)

在下面的示例中,我们使用 const 关键字定义了一个名为 'arr' 的数组。之后,我们更新了数组中索引为 0 的元素,并在数组末尾插入了字符串 '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

示例(常量对象)

在下面的示例中,我们使用 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}
因此,不能更改使用 const 关键字声明的变量(数组和对象)的引用,但可以更新元素和属性。

没有 Const 提升

使用 const 关键字定义的变量不会被提升到代码的顶部。

在下面的示例中,在定义之前访问了 const 变量 x。这将导致错误。可以使用 try-catch 语句捕获错误。

<html>
<body>
   <script>
      document.write(x);
	  const x = 10;	  
   </script>
</body>
</html>

以下是使用 const 关键字声明的变量的其他一些属性。

  • 块级作用域。
  • 它不能在相同的作用域中重新声明。
  • 使用 const 关键字声明的变量不会被提升到代码的顶部。
  • 常量变量的值是原始值。

var、let 和 const 之间的区别

我们给出了使用 var、let 和 const 关键字声明的变量之间的比较表。

比较依据 var let const
作用域 函数
提升
重新赋值
重新声明
绑定 This

在 var、let 和 const 中,您应该使用哪个?

  • 对于块级作用域,您应该使用 let 关键字。

  • 如果您需要将常量引用赋值给任何值,请使用 const 关键字。
  • 当您需要在任何特定块(例如循环、'if 语句'等)内定义变量,并且需要在块外部但在函数内部访问它时,您可以使用 var 关键字。
  • 但是,您可以使用任何关键字来定义全局变量。
  • 重新声明变量不是一个好的实践。因此,您应该避免它,但如果必要,您可以使用 var 关键字。
广告

© . All rights reserved.