1. let
, var
, và const
là gì?
Trong JavaScript, let
, var
, và const
đều là từ khóa dùng để khai báo biến, nhưng chúng có các đặc điểm và phạm vi hoạt động khác nhau.
var
: Là cách khai báo biến cũ trước khi có ES6 (ECMAScript 2015). Biếnvar
có phạm vi toàn cục hoặc phạm vi hàm, và nó có thể được hoisted, tức là được đưa lên đầu phạm vi trước khi mã thực thi.let
: Được giới thiệu trong ES6, khai báo biến có phạm vi khối (block scope), tức là nó chỉ tồn tại trong khối{}
bao quanh nó.let
không cho phép tái khai báo trong cùng phạm vi và được hoisted nhưng không khởi tạo trước.const
: Cũng được giới thiệu trong ES6, dùng để khai báo các biến hằng số, nghĩa là giá trị của chúng không thể bị gán lại sau khi đã được khởi tạo.const
cũng có phạm vi khối nhưlet
.
2. Dùng trong trường hợp nào?
var
:- Sử dụng hạn chế vì phạm vi rộng của
var
có thể dẫn đến lỗi không mong muốn, nhất là trong các dự án lớn hoặc khi mã phức tạp. - Dùng khi bạn cần khai báo biến mà có thể truy cập từ nhiều phạm vi hoặc khi cần hỗ trợ mã cũ.
- Sử dụng hạn chế vì phạm vi rộng của
let
:- Dùng khi bạn cần khai báo biến mà giá trị của nó có thể thay đổi.
- Nên sử dụng
let
thay chovar
trong hầu hết các trường hợp để hạn chế lỗi và đảm bảo biến chỉ tồn tại trong phạm vi khối.
const
:- Dùng khi bạn muốn khai báo biến có giá trị cố định và không cần thay đổi sau khi khởi tạo.
- Phù hợp để khai báo các hằng số hoặc các biến mà bạn không có ý định gán lại giá trị mới.
- Với các đối tượng (objects) hoặc mảng (arrays), sử dụng
const
khi bạn chỉ thay đổi thuộc tính của đối tượng hoặc các phần tử của mảng mà không cần thay đổi tham chiếu.
Ví dụ minh họa:
var
:
function exampleVar() {
var x = 10;
if (true) {
var x = 20; // Biến `x` bên trong if vẫn là biến `x` đã khai báo trước đó
console.log(x); // 20
}
console.log(x); // 20
}
let
:
function exampleLet() {
let x = 10;
if (true) {
let x = 20; // Biến `x` này chỉ tồn tại trong phạm vi của khối if
console.log(x); // 20
}
console.log(x); // 10
}
const
:
const pi = 3.14;
// pi = 3.1415; // Lỗi: Không thể gán lại giá trị cho biến `const`
const obj = { name: “John” };
obj.name = “Jane”; // Có thể thay đổi thuộc tính của đối tượng
console.log(obj.name); // Jane
Tóm lại:
- Sử dụng
var
nếu cần hỗ trợ mã cũ hoặc khi phạm vi rộng không gây vấn đề. - Sử dụng
let
khi cần khai báo biến mà giá trị có thể thay đổi và chỉ muốn nó tồn tại trong phạm vi khối. - Sử dụng
const
khi biến cần có giá trị cố định hoặc không muốn thay đổi tham chiếu của biến, đặc biệt là với các đối tượng và mảng.

Dương Trần Hà, hiện mình đang là kỹ công nghệ phần mềm và cũng là giám đốc thành lập công ty DTH Solutions. Mình có nhiều năm kinh nghiệm, kiến thức chuyên môn lập trình, nodejs, nestjs, laravel, yii2, reactjs, nextjs. Mình đã phát triển rất nhiều dự án thực tế cho doanh nghiệp, cơ quan. Mình đã đạt được một số thành công nhỏ, đồng thời mình vẫn đang tiếp tục học tập để trau dồi kiến thức mỗi ngày. Mình rất yêu thích công nghệ, đam mê chia sẻ những kiến thức, thông tin hữu ích cho mọi người.