O console do Chrome já declarou variáveis lançam erros de referência indefinidos para permitir
Recentemente eu me deparei com essa coisa estranha no console do Chrome. Aqui, intencionalmente, atribuo uma coisa indefinida a a para gerar um erro.
let a = werwr // Uncaught ReferenceError: werwr is not defined
Então, quando tentei atribuir algo legítimo a, isso aconteceu:
let a = "legit string" // Uncaught SyntaxError: Identifier 'a' has already been declared
então não posso usar "let" porque a já foi declarada. Então, tentei reatribuir outra coisa ao "já declarado um"
a = "legit string" // Uncaught ReferenceError: a is not defined
Parece que não posso reatribuir outra coisa a um mas, ao mesmo tempo, um foi declarado, então não posso usar let novamente.
Eu entendo a diferença entre declarar e atribuir uma variável. No entanto, aqui parece que nenhum dos dois poderia ser feito novamente. Isso tem algo a ver com o escopo de "deixar" no console? Porque a mesma coisa funciona totalmente para "var"
var a = werwr
// Uncaught ReferenceError: werwr is not defined
a = ”legit string“
// ”legit string“
var a = "legit string"
// Uncaught SyntaxError: Identifier 'a' has already been declared
Acompanhamento
Parece haver alguma diferença entre içar "manualmente" a instrução let versus o caso implícito.
throw new Error
let example = 5
// same errors as before
enquanto, neste caso, o exemplo pode ser reatribuído novamente.
let example
throw new Error
example = 5