Biến trong JavaScript: var, let, const khác nhau gì?
Khi học JavaScript, bạn sẽ gặp 3 cách khai báo biến: var, let, và const. Dùng cái nào? Khác nhau ở đâu? Bài viết này giải thích tất cả.
Biến trong JavaScript là gì?
var ten = "Minh"; // Cách cũ (ES5) — Không khuyến nghị
let tuoi = 22; // Cách mới (ES6) — Nên dùng
const PI = 3.14159; // Hằng số — Dùng mặc định
var — Vấn đề của cách cũ
// var có function scope — Gây bug!
function viDu() {
var x = 10;
if (true) {
var x = 20; // Cùng biến x — bị ghi đè!
}
console.log(x); // 20 (không phải 10 như mong đợi)
}
// Hoisting — khai báo trước dùng không báo lỗi
console.log(ten); // undefined (không lỗi — dễ gây nhầm)
var ten = "Minh";
let — Biến hiện đại (Khuyến nghị)
// let có block scope — An toàn hơn
function viDu() {
let x = 10;
if (true) {
let x = 20; // Biến x KHÁC trong block này
}
console.log(x); // 10 (không bị ảnh hưởng!)
}
let diem = 8.0;
diem = 8.5; // OK — có thể gán lại
const — Hằng số
const PI = 3.14159;
PI = 3; // TypeError!
// Object/Array: có thể thay đổi nội dung
const sinh_vien = { ten: "Minh", tuoi: 22 };
sinh_vien.tuoi = 23; // OK!
sinh_vien = {}; // TypeError!
So sánh var vs let vs const
| var | let | const | |
|---|---|---|---|
| Scope | Function | Block | Block |
| Hoisting | Có (undefined) | Không | Không |
| Gán lại | Được | Được | Không |
| Khi nào dùng | Không bao giờ | Giá trị thay đổi | Mặc định |
Template Literals (ES6)
const ten = "Lan";
const tuoi = 20;
// Cách cũ
const info1 = "Tôi là " + ten + ", " + tuoi + " tuổi";
// Template literal — rõ hơn
const info2 = `Tôi là ${ten}, ${tuoi} tuổi`;
Kết luận
Quy tắc đơn giản: dùng const mặc định, let khi cần thay đổi, không bao giờ dùng var.