JS 中 const 關鍵詞的實用指南

在現代 JavaScript 開發中,const 是和 let 同等重要的變量聲明關鍵詞。它專門用於聲明那些值不允許被重新賦值的變量,憑藉其穩定性和安全性,成為定義常量、固定引用數據的首選。相比於 var 的隨意和 let 的靈活,const 強制開發者遵循 “一旦聲明,不隨意修改” 的原則,讓代碼邏輯更清晰,維護成本更低。

const 最核心的規則就是聲明時必須初始化,並且初始化後不能再被重新賦值。這一點和 let、var 有明顯區別,let 和 var 可以先聲明後賦值,而 const 如果只聲明不賦值,會直接拋出語法錯誤;賦值後再試圖更改,同樣會報錯。這個特性讓 const 成為定義配置項、固定數值等場景的最佳選擇。

基礎用法對比代碼示例:

// const必須聲明並初始化
const baseUrl = "https://api.example.com"; // 正確
const maxCount; // 報錯:SyntaxError: Missing initializer in const declaration

// 初始化後不能重新賦值
baseUrl = "https://new-api.example.com"; // 報錯:TypeError: Assignment to constant variable

// 對比let和var
let num = 10;
num = 20; // 正確,let可以重新賦值
var str = "hello";
str = "world"; // 正確,var可以重新賦值

很多開發者會誤以為 const 聲明的變量 “完全不能修改”,這其實是一個常見誤區。const 限制的是變量的引用,而不是變量指向的內容。如果 const 聲明的是對象、數組這類引用類型數據,變量保存的是內存地址,const 禁止修改這個地址,但對象的屬性、數組的元素依然可以自由增減和修改。這個特性在實際開發中非常實用,既能固定引用避免誤操作,又能靈活修改數據內容。

引用類型修改示例代碼:

// const聲明對象,可修改屬性
const user = {
  name: "張三",
  age: 25
};
// 正確:修改對象屬性
user.age = 26;
user.gender = "男";
console.log(user); // 輸出:{ name: '張三', age: 26, gender: '男' }
// 錯誤:重新賦值對象
user = { name: "李四" }; // TypeError: Assignment to constant variable

// const聲明數組,可修改元素
const fruits = ["蘋果", "香蕉", "橙子"];
// 正確:添加、修改、刪除數組元素
fruits.push("葡萄");
fruits[1] = "芒果";
fruits.pop();
console.log(fruits); // 輸出:[ '蘋果', '芒果', '葡萄' ]
// 錯誤:重新賦值數組
fruits = ["西瓜", "草莓"]; // TypeError: Assignment to constant variable

和 let 一樣,const 也具備塊級作用域,並且同樣存在 “暫時性死區”,不允許在同一作用域內重複聲明。這些特性讓 const 和 let 一起,徹底替代了 var 在現代 JS 開發中的位置,避免了變量提升、作用域混亂等問題。

塊級作用域與暫時性死區示例代碼:

// 塊級作用域
if (true) {
  const pi = 3.14159;
  console.log(pi); // 輸出:3.14159
}
console.log(pi); // 報錯:ReferenceError: pi is not defined

// 暫時性死區
console.log(school); // 報錯:ReferenceError: Cannot access 'school' before initialization
const school = "陽光中學";

// 不允許重複聲明
const language = "JavaScript";
const language = "Python"; // 報錯:SyntaxError: Identifier 'language' has already been declared

在實際開發中,const 的使用場景非常廣泛。比如定義項目中的常量配置(如接口地址、超時時間)、聲明工具函數、固定組件的初始狀態等。使用 const 不僅能讓代碼的意圖更明確 —— 看到 const 就知道這個變量不會被重新賦值,還能在編譯階段提前發現錯誤,減少運行時的意外問題。

const 常見實戰場景代碼:

// 1. 定義常量配置
const TIMEOUT = 5000; // 請求超時時間
const STATUS_SUCCESS = 200; // 接口成功狀態碼

// 2. 聲明工具函數
const formatTime = (time) => {
  return new Date(time).toLocaleString();
};

// 3. 固定DOM元素引用
const btnSubmit = document.getElementById("submit-btn");
btnSubmit.addEventListener("click", () => {
  console.log("點擊了提交按鈕");
});

掌握 const 的核心特性,分清 “引用不可改” 和 “內容可改” 的區別,合理搭配 let 使用,能讓 JavaScript 代碼更規範、更健壯。在實際開發中,建議優先使用 const,只有當變量確實需要重新賦值時,再使用 let,徹底拋棄 var。