Escribí el siguiente código en el editor de código para producir un error:
const a = 1; console.log(a); const a = 1; // Uncaught SyntaxError: Identifier 'a' has already been declaredHice lo mismo directamente en la consola:
const a = 1; //undefined const a = 1; //undefined const a = 2; // undefined a // 2¿Por qué aquí no se detectó el error?
Asumiendo que estás usando Chrome, esto es así por diseño. Las redeclaraciones de const se implementaron intencionalmente en Chrome Devtools 92 como un medio para facilitar a los desarrolladores probar el código dentro de la consola de Chrome:
La consola ahora admite la redeclaración de la instrucción const, además de las redeclaraciones let y class existentes. La imposibilidad de volver a declarar era una molestia común para los desarrolladores web que usan la Consola para experimentar con el nuevo código JavaScript.
Como señala la publicación del blog, le permite volver a declarar const y otros enlaces que normalmente no podría volver a declarar. Esto significa algo como:
> const a = 1; > const a = 2; está permitido ya que las dos líneas de código se ejecutan en scripts REPL separados (indicados por > ), mientras se ejecuta:
> const a = 1; const a = 2; x Uncaught SyntaxError: Identifier 'a' has already been declared no está permitido ya que se está redeclarando const dentro del único script REPL (se pueden ingresar varias líneas de código en una línea de comando usando SHIFT + ENTER ). Este cambio es solo para la consola de herramientas de desarrollo de Chrome, y no para los scripts de página normales, que generarán un SyntaxError como se esperaba si intenta volver a declarar const .