Các Kiểu Khai Báo
Các Cách Khai Báo Biến
Phần tiêu đề “Các Cách Khai Báo Biến”JavaScript cung cấp 3 từ khóa để khai báo biến: var, let, và const. Mỗi từ khóa có đặc điểm và trường hợp sử dụng khác nhau.
Lệnh var dùng để khai báo một biến có phạm vi hàm (function scope) hoặc phạm vi toàn cục (global scope). Biến có thể được khởi tạo hoặc để trống.
Đặc điểm chi tiết:
varcó hoisting: biến được đưa lên đầu phạm vi, nhưng giá trị thì không được gán sẵn- Phạm vi chỉ gói gọn trong hàm, không giới hạn trong khối
{} - Có thể khai báo lại cùng tên trong cùng một phạm vi
console.log(a); // undefined (không báo lỗi)var a = 10;
if (true) { var x = 5;}console.log(x); // 5Lệnh let dùng để khai báo một biến có phạm vi khối (block scope). Biến có thể được khởi tạo hoặc để trống.
Đặc điểm chi tiết:
- Block scope: chỉ tồn tại bên trong cặp
{} - Có hoisting, nhưng không thể truy cập trước khi khai báo → Temporal Dead Zone (TDZ)
- Không thể khai báo lại cùng tên trong cùng một phạm vi
if (true) { let y = 10; console.log(y); // 10}console.log(y); // ReferenceError: y is not defined
console.log(z); // ReferenceError (TDZ)let z = 20;Lệnh const cũng khai báo một biến có phạm vi khối (block scope). Khác với let, giá trị không thể gán lại sau khi đã khởi tạo.
Đặc điểm chi tiết:
- Bắt buộc phải gán giá trị ban đầu khi khai báo
- Không thể gán lại giá trị khác
- Với object hoặc array, có thể thay đổi giá trị bên trong
const pi = 3.14;pi = 3.14159; // TypeError: Assignment to constant variable
const arr = [1, 2, 3];arr.push(4); // OKarr[0] = 10; // OKarr = [10, 20]; // TypeErrorBảng So Sánh var | let | const
Phần tiêu đề “Bảng So Sánh var | let | const”| Từ khóa | Phạm vi (Scope) | Hoisting | Khai báo lại | Gán lại | Ghi chú |
|---|---|---|---|---|---|
| var | Hàm / Toàn cục | Có | Có thể | Có thể | Không giới hạn trong block {} |
| let | Khối {} | Có (TDZ) | Không | Có thể | An toàn hơn var |
| const | Khối {} | Có (TDZ) | Không | Không | Dùng cho hằng số, hoặc object/array cần cố định tham chiếu |