Actualmente estoy leyendo el libro Secrets of the Javascript Ninja y no entiendo el siguiente comportamiento basado en un ejemplo del capítulo 5 que explica cómo se sobrescriben los identificadores de función:
ejemplo de código del libro:
console.log(typeof fun); var fun = 3; console.log(typeof fun); function fun() {} console.log(typeof fun);Salida como se esperaba: función / número / número
console.log(typeof fun); let fun = 3; console.log(typeof fun); function fun() {} console.log(typeof fun); Pero cuando cambio la definición para let , aparece el error de que la diversión ya se ha eliminado. Cuando se crea el entorno léxico, ¿por qué puedo anular var pero let ya bloquee la definición de la declaración de la función?
La pregunta adjunta, también fue respondida con " let se inicialicen las variables hasta que se evalúe su definición".¿Cuál es la diferencia entre usar "let" y "var"?