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ị | Có | Có | Không |
Khai báo lại | Có | 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 let
và const
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.