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 關鍵字。
廣告