Giới Thiệu
JavaScript cung cấp ba cách để khai báo biến: var
, let
và const
. Mỗi cách khai báo có những đặc điểm riêng biệt và được sử dụng trong những hoàn cảnh khác nhau. Trong bài viết này, chúng ta sẽ cùng tìm hiểu chi tiết về sự khác biệt giữa ba loại khai báo biến này.
var
Đặc Điểm
- Khai báo biến toàn cục hoặc cục bộ theo phạm vi hàm.
- Có thể được khai báo lại trong cùng một phạm vi.
- Bị hoisted (đưa lên đầu phạm vi).
function exampleVar() {
if (true) {
var x = 10;
}
console.log(x); // 10
}
exampleVar();
Hoisting
Biến khai báo bằng var
bị hoisted lên đầu phạm vi.
console.log(y); // undefined
var y = 5;
let
Đặc Điểm
- Khai báo biến theo phạm vi khối lệnh (block scope).
- Không thể khai báo lại trong cùng một phạm vi.
- Bị hoisted nhưng không khởi tạo.
function exampleLet() {
if (true) {
let x = 10;
console.log(x); // 10
}
console.log(x); // ReferenceError: x is not defined
}
exampleLet();
Hoisting
Biến khai báo bằng let
bị hoisted nhưng không khởi tạo.
console.log(y); // ReferenceError: Cannot access 'y' before initialization
let y = 5;
const
Đặc Điểm
- Khai báo biến theo phạm vi khối lệnh (block scope).
- Không thể khai báo lại và không thể thay đổi giá trị sau khi khởi tạo.
- Bị hoisted nhưng không khởi tạo.
function exampleConst() {
const x = 10;
x = 20; // TypeError: Assignment to constant variable.
}
exampleConst();
Hoisting
Biến khai báo bằng const
bị hoisted nhưng không khởi tạo.
console.log(z); // ReferenceError: Cannot access 'z' before initialization
const z = 5;
Tổng Kết
Trong JavaScript, var
, let
và const
có những cách hoạt động khác nhau về phạm vi, khả năng hoisted và tính tái định nghĩa. Hiểu rõ sự khác biệt này giúp chúng ta viết mã code hiệu quả hơn và tránh những lỗi không mong muốn trong quá trình lập trình.