Tengo este fragmento de código:
4-ámbito.js
const thisIsAConst = 50 const constObj = {} constObj.a = 'a' let thisIsALet = 51 thisIsALet = 50 let thisIsALet = 50 // errors!Cuando ejecuto este archivo, tiene un error:
SyntaxError: el identificador 'thisIsALet' ya se ha declarado
Intento modificar el archivo, agregar una función de impresión para imprimir thisIsAConst en la parte superior del archivo:
4-ámbito.js
console.log(thisIsAConst) const thisIsAConst = 50 const constObj = {} constObj.a = 'a' let thisIsALet = 51 thisIsALet = 50 let thisIsALet = 50 // errors!¿Por qué me sale el mismo error?
SyntaxError: el identificador 'thisIsALet' ya se ha declarado
lo que espero es
ReferenceError: no se puede acceder a 'thisIsAConst' antes de la inicialización
¿Es la forma en que funciona el motor de JavaScript?
"El identificador ya ha sido declarado" es un SyntaxError, se genera en la etapa de análisis, incluso antes de que el programa comience a ejecutarse. Los errores de referencia y de tipo son errores de tiempo de ejecución y se generan durante el tiempo de ejecución.
Si comenta el segundo let en este ejemplo, primero verá el resultado de la primera línea y luego el ReferenceError:
console.log('hi') console.log(c) const c = 50 let v let v