Temporal dead zone is the period between entering scope and being declared where they cannot be accessed.
An example will give it clear the concept of TDZ. So, for example-
accessDenied = 'can not access' // <- ReferenceError: accessDenied is not defined let accessDenied = 'dragons'
here, If we try to access the variable before it is declared, then the program will throw error.
access = 'can access' var access = 'success'
In the above example, it will not throw error.
Actually let declarations (and const, which works the same way) may not be hoisted, since accessDenied does not appear to exist before it is assigned a value. let and const are hoisted (like var, class and function), but there is a period between entering scope and being declared where they cannot be accessed (TDZ).