JavaScript Constants: Unlocking the Power of Immutability

Xin chào các pháp sư JavaScript tương lai! Tôi rất vui mừng được dẫn bạn vào hành trình qua thế giới kỳ diệu của các hằng số JavaScript. Là giáo viên khoa học máy tính hàng xóm thân thiện của bạn, tôi đã thấy rất nhiều sinh viên struggle với khái niệm này, nhưng đừng lo lắng! Đến cuối bài học này, bạn sẽ trở thành những nhà sành điệu về hằng số. Vậy, hãy lấy键盘 (keyboards) của bạn và cùng nhau lặn vào!

JavaScript - Constants

What are JavaScript Constants?

Hãy tưởng tượng bạn đang nướng một chiếc bánh. Một khi bạn đã đặt nó vào lò nướng, bạn không thể đột nhiên quyết định biến nó thành một chiếc pizza, phải không? Đó là cách hằng số hoạt động trong JavaScript. Chúng giống như một lời hứa bạn đưa ra cho mã của mình: "Giá trị này sẽ không thay đổi, cam đoan!"

Các hằng số là các biến sau khi được gán giá trị, không thể gán lại. Chúng giống như anh chị lớn cứng đầu của biến - một khi đã quyết định, không thể thay đổi!

Declaring JavaScript Constants

Để khai báo một hằng số trong JavaScript, chúng ta sử dụng từ khóa const. Nó đơn giản như nói, "Này JavaScript, thứ này ở đây à? Nó sẽ không thay đổi. Được rồi."

Hãy xem một số ví dụ:

const PI = 3.14159;
const DAYS_IN_WEEK = 7;
const FAVORITE_COLOR = "purple";

Trong các ví dụ này, chúng ta đã khai báo các hằng số cho hằng số toán học pi, số ngày trong một tuần và màu sắc yêu thích. Một khi được đặt, các giá trị này sẽ bị khóa lại.

Can't be Reassigned: The Immutable Nature of Constants

Bây giờ, hãy xem hằng số thể hiện màu sắc thật sự của chúng. Một khi bạn đã gán giá trị cho một hằng số, bạn không thể thay đổi nó. Đó như trying to convince a cat to take a bath - nó chỉ đơn giản là không xảy ra!

const MY_AGE = 25;
console.log(MY_AGE); // Output: 25

MY_AGE = 26; // Throws an error: Assignment to a constant variable.

Nếu bạn cố gắng gán lại giá trị cho một hằng số, JavaScript sẽ nổi giận (dưới dạng một lỗi). Nó đang nói, "Hey! Bạn đã hứa rằng điều này sẽ không thay đổi!"

Block Scope: The Playground of Constants

Các hằng số có phạm vi mà chúng ta gọi là "block scope". Hãy tưởng tượng một khối như một sân chơi 被 fenced. Các hằng số chỉ có thể chơi trong sân chơi được chỉ định của chúng.

if (true) {
const BLOCK_SCOPED = "I'm only available inside this block!";
console.log(BLOCK_SCOPED); // Output: I'm only available inside this block!
}

console.log(BLOCK_SCOPED); // Throws an error: BLOCK_SCOPED is not defined

Trong ví dụ này, BLOCK_SCOPED giống như một đứa trẻ không được phép rời khỏi sân chơi. Nó tồn tại chỉ trong khối if và không thể truy cập từ bên ngoài.

Constant Arrays and Objects in JavaScript: The Plot Twist

Bây giờ, hãy xem điều gì xảy ra khi chúng ta sử dụng const với các mảng và đối tượng, cốt truyện trở nên phức tạp hơn! Liên kết hằng số là không thay đổi, nhưng nội dung của mảng hoặc đối tượng vẫn có thể thay đổi. Đó như having a constant pet - bạn không thể thay đổi việc nó là宠物 của bạn, nhưng bạn vẫn có thể dạy nó những trick mới!

const MY_PETS = ["dog", "cat", "fish"];
console.log(MY_PETS); // Output: ["dog", "cat", "fish"]

MY_PETS.push("hamster");
console.log(MY_PETS); // Output: ["dog", "cat", "fish", "hamster"]

MY_PETS = ["parrot"]; // Throws an error: Assignment to a constant variable

Trong ví dụ này, chúng ta có thể thêm vào mảng MY_PETS, nhưng chúng ta không thể gán nó lại bằng một mảng hoàn toàn mới.

No Const Hoisting: Stay Where I Put You!

Khác với var, const không bị nâng cấp. Nâng cấp là như khi bạn bảo một đứa trẻ dọn phòng của chúng, và chúng nói rằng chúng sẽ làm sau - nhưng với const, không có "sau". Bạn phải khai báo và khởi tạo một hằng số trước khi bạn sử dụng nó.

console.log(HOISTED_VAR); // Output: undefined
var HOISTED_VAR = "I'm hoisted!";

console.log(NOT_HOISTED_CONST); // Throws an error: Cannot access 'NOT_HOISTED_CONST' before initialization
const NOT_HOISTED_CONST = "I'm not hoisted!";

Difference between var, let, and const

Bây giờ, hãy so sánh ba từ khóa khai báo biến của chúng ta: var, let, và const. Chúng như ba anh chị em, mỗi người có tính cách riêng:

Feature var let const
Scope Function scope Block scope Block scope
Hoisting Yes No No
Reassignment Yes Yes No
Redeclaration Yes No No

Which should you use among var, let, and const?

Sau nhiều năm dạy JavaScript, đây là lời khuyên của tôi:

  1. Sử dụng const theo mặc định. Nó như đặt biến của bạn trong một két - an toàn và đáng tin cậy.
  2. Sử dụng let khi bạn biết rằng giá trị sẽ thay đổi, như một bộ đếm trong một vòng lặp.
  3. Tránh sử dụng var除非 bạn đang làm việc với mã cũ. Nó như điện thoại cũ trong ngăn kéo của bạn - nó hoạt động, nhưng bây giờ có những tùy chọn tốt hơn.

Nhớ rằng, việc chọn giữa chúng là về việc truyền đạt ý định của bạn cho các nhà phát triển khác (bao gồm cả bạn tương lai!).

Cuối cùng, các hằng số trong JavaScript là công cụ mạnh mẽ để tạo ra mã dự đoán và ít lỗi hơn. Chúng như người lớn có trách nhiệm trong phòng, giữ mọi thứ trong秩序. Khi bạn tiếp tục hành trình JavaScript của mình, bạn sẽ thấy rằng sử dụng các hằng số một cách thích hợp có thể làm cho mã của bạn sạch sẽ hơn, hiệu quả hơn và dễ hiểu hơn.

Vậy, hãy tiến lên, các padawan trẻ, và chúc may mắn với const!

Credits: Image by storyset