¿QUÉ ES LA TEMPORAL DEAD ZONE (Zona Muerta Temporal) EN JAVASCRIPT? | JS en ESPAÑOL

Una región de nestro código donde una variable no se puede acceder porque la ejecución del programa todavía no pasó por la línea de código donde es declarada

/*El uso del hoisting hace que la declaracion de variables empezara en la primera
linea del scope, esto se ve reflejado en la siguiente linea */
console.log(nombre) //undefined por #hoisting
var nombre = "Mi nombre"

/*Pero en el ES6 se declaro la TDZ a donde son mandadas las variables 
al ser delcaradas con let o const hasta que sean usadas*/
console.log(nombre) //reference error
const nombre = "Mi nombre"

/*Por lo que por hoisting esto obtendrá*/
const nombre //en realidad esta en la TDZ hasta que se le asigne un valor, por lo tanto-
console.log(nombre) //reference error
nombre = "Mi nombre"
/*Otro ejemplo de TDZ*/
let miEdad = getEdad(); //aqui no hay problema porque miEdad ya tiene un valor
const edad = 16 //
function getEdad() {
	return edad // aqui el problema es que edad no esta inicializada, no tiene valor
}

/*mediante el hoisting obtendremos esto*/
let miEdad //en la TDZ 
const edad //en la TDZ
function getEdad() { //just up here by hoisting 
	return edad
}
miEdad = getEdad(); //aqui corremos la funcion get edad, pero edad esta en la TDZ 
//por lo tanto reference error
edad = 16 
/*Que pasa si a una variable le asignamos la misma variable como valor*/
let nombre = nombre
/*Js va a iniciar preguntandose por el valor de la derecha, 
pero al no estar inicializado nos mandara un refference errror*/