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.
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.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.
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.
varfunction 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.
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.