Temporal Dead Zone (TDZ) trong JavaScript là một khái niệm liên quan đến biến được khai báo bằng let
và const
. TDZ đề cập đến khoảng thời gian mà một biến đã được khai báo nhưng chưa được khởi tạo, và trong khoảng thời gian này, việc truy cập biến đó sẽ gây ra lỗi.
1. Khái niệm về TDZ
- Temporal Dead Zone xảy ra khi bạn cố gắng truy cập một biến trước khi nó được khởi tạo. Nếu một biến được khai báo bằng
let
hoặc const
trong một block (ví dụ: trong một hàm hoặc khối điều kiện), nó sẽ không thể được sử dụng cho đến khi dòng mã khai báo biến đó được thực thi.
2. Ví dụ minh họa
function example() {
console.log(x); // ReferenceError: Cannot access 'x' before initialization
let x = 10; // 'x' đã được khai báo nhưng chưa khởi tạo
}
example();
Trong ví dụ trên, khi bạn cố gắng truy cập x
trước khi nó được khởi tạo, một lỗi ReferenceError
sẽ được ném ra.
3. Tại sao TDZ tồn tại?
TDZ tồn tại để ngăn chặn việc sử dụng biến trước khi chúng được khai báo, điều này có thể dẫn đến những lỗi khó phát hiện trong mã. Các biến được khai báo bằng var
không có TDZ, vì vậy chúng sẽ được khởi tạo với giá trị undefined
khi khai báo, dẫn đến một hành vi khác biệt.
4. Ví dụ so sánh với var
function exampleVar() {
console.log(x); // undefined
var x = 10; // 'x' được khởi tạo với giá trị undefined
}
exampleVar();
Trong trường hợp này, việc truy cập x
trước khi nó được khởi tạo không gây ra lỗi mà chỉ trả về giá trị undefined
.
5. Kết luận
TDZ là một phần quan trọng trong cách mà JavaScript xử lý các biến được khai báo bằng let
và const
. Điều này giúp phát hiện lỗi lập trình sớm hơn và làm cho mã trở nên dễ hiểu hơn, vì bạn luôn phải khởi tạo biến trước khi sử dụng chúng.