Khi mới học JavaScript, bạn sẽ thấy có tới 3 cách khai báo biến: var, let, và const. Vậy khi nào nên dùng cái nào? Bài viết này sẽ giúp bạn hiểu rõ sự khác biệt và áp dụng chính xác trong thực tế.

1. var, let, const là gì?

Cả 3 đều dùng để khai báo biến trong JavaScript, nhưng khác nhau ở:

  • Phạm vi hoạt động (scope)

  • Tính hoisting

  • Khả năng gán lại giá trị

2. So sánh nhanh

Đặc điểm var let const
Ra đời từ ES5 (2009) ES6 (2015) ES6 (2015)
Phạm vi (scope) function scope block scope block scope
Hoisting Có, nhưng không khởi tạo Có, nhưng không khởi tạo Có, nhưng không khởi tạo
Gán lại giá trị Không
Khai báo lại Không Không

3. Giải thích từng loại

varĐừng dùng nếu không bắt buộc

function demoVar() {
  if (true) {
    var x = 10;
  }
  console.log(x); // vẫn in ra 10
}

- var không có block scope, chỉ có phạm vi trong hàm.

- Bị hoisting lên đầu hàm → dễ gây lỗi logic khó debug.

Nên tránh dùng var trong dự án hiện đại.

let - Khai báo biến có thể thay đổi

let name = "Unicode";
name = "Unicode Academy"; // OK
  • Có block scope → an toàn trong vòng lặp, điều kiện, hàm.

  • Không cho khai báo lại trong cùng phạm vi.

  • Có thể gán lại giá trị.

Thích hợp cho biến sẽ thay đổi giá trị trong quá trình chạy.

const - Khai báo hằng số (không gán lại được)

const PI = 3.14;
PI = 3.14159; // lỗi
  • Phù hợp cho giá trị cố định, không thay đổi sau khi gán lần đầu.

  • Với object/array, vẫn có thể thay đổi thuộc tính/phần tử bên trong:

const user = { name: "A" };
user.name = "B"; // hợp lệ

4. Khi nào dùng let, khi nào dùng const?

Quy tắc vàng:

  • Mặc định dùng const

  • Chỉ dùng let khi bạn chắc chắn sẽ thay đổi giá trị

const items = [];
for (let i = 0; i < 5; i++) {
  items.push(i);
}

Nếu bạn đang học lập trình web tại online.unicode.vn, hãy chú ý dùng đúng letconst trong tất cả bài tập và dự án để viết code sạch, dễ bảo trì và đúng chuẩn hiện đại.