Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tạo hằng số (Constants) trong JavaScript với const

Từ khóa const (ES2015/ES6) dùng để khai báo **hằng số** - biến không thể gán lại (reassign) sau khi khởi tạo.

Đặc điểm quan trọng:

  • Block-scoped (phạm vi khối - trong cặp {})
  • Phải khởi tạo giá trị ngay khi khai báo
  • Không thể gán lại (reassignment): const a = 1; a = 2; // TypeError
  • Object/Array khai báo const VẪN CÓ THỂ THAY ĐỔI NỘI DUNG (mutation)

Ví dụ minh họa

<!DOCTYPE html>
<html lang="vi">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Const trong JavaScript</title>
  <style>
    body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; }
    .sample { font-size: 18px; font-weight: 500; margin: 10px 0; color: red; }
    button { padding: 8px 16px; cursor: pointer; }
  </style>
</head>
<body>
  <h1>Const Example - Hằng số JavaScript</h1>
  <button class="Btn" id="btn">NHẤN VÀO ĐÂY</button>
  <p class="sample" id="sample"></p>
  <h3> Nhấn nút để thử thay đổi giá trị const </h3>
  <script>
    const sampleEle = document.querySelector("#sample");
    const a = 33; // Hằng số số nguyên
    sampleEle.innerHTML = "a = " + a + "
"; document.querySelector("#btn").addEventListener("click", () => { try { a = 44; // Thử gán lại -> TypeError } catch (err) { sampleEle.innerHTML += "Lỗi: " + err.message + "
"; sampleEle.innerHTML += "Loại lỗi: " + err.name + "
"; sampleEle.innerHTML += "→ const không thể gán lại giá trị!
"; } // Demo: const object VẪN có thể mutation sampleEle.innerHTML += "
--- Const Object Mutation ---
"; const user = { name: "Rohan", age: 22 }; sampleEle.innerHTML += "Trước: " + JSON.stringify(user) + "
"; user.age = 23; // OK - mutation user.city = "Hanoi"; // OK - thêm property sampleEle.innerHTML += "Sau mutation: " + JSON.stringify(user) + "
"; // user = {}; // Lỗi: Assignment to constant variable }); </script> </body> </html>

Kết quả

a = 33
Lỗi: Assignment to constant variable
Loại lỗi: TypeError
→ const không thể gán lại giá trị!

--- Const Object Mutation ---
Trước: {"name":"Rohan","age":22}
Sau mutation: {"name":"Rohan","age":23,"city":"Hanoi"}

Const vs Let vs Var:

Đặc điểmvarletconst
Phạm viFunction-scopedBlock-scopedBlock-scoped
HoistingCó (khởi tạo undefined)Có (TDZ - Temporal Dead Zone)Có (TDZ)
Gán lại (reassign)OKOK❌ Lỗi
Khai báo lại (redeclare)OK❌ Lỗi❌ Lỗi
Phải khởi tạo ngayKhôngKhôngCó

Best Practice:

  • Mặc định dùng const cho mọi khai báo
  • Chỉ dùng let khi **cần** gán lại giá trị
  • Tránh var trong code hiện đại
  • Đặt tên const UPPER_SNAKE_CASE cho hằng số thực sự (config, magic numbers): const MAX_RETRY = 3;